[brainstrorming] Billing sistem
Malo da razmrdamo vijuge, a i da krene bar jedan post ovde :)
Dakle, billing sistem. - Postoje services - Postoje premium_services (velika je razlika u odnosu na services) - Postoje users - Postoje user_services - Postoje user_premium_services Jedan korisnik može biti prijavljen na više servisa, kao što i više korisnika može biti prijavljeno na isti servis. Klasična M2M. Isto važi i za premium services. Neke services su besplatne, neke se naplaćuju odmah (one-time), neke na kraju meseca, neke su recurring i to na periode weekly, bi-weekly, monhtly, quarterly. Pored toga, postoje i support, gde se neke stvari naplaćuju a neke ne. Recimo ne naplaćuje se otvaranje servisa, ali modifikacija postojećih servisa se naplaćuje. Dakle, kako organizovati bazu podataka? - Tabela billings u kojoj se nalaze sve payable items: negativne vrednosti su plaćanja user-a, pozivine stavke su dugovanja usera. Nešto kao izvod sa bankovnog računa. Napomena: billing items se ne naplaćuju same po sebi već se kreiraju Invoices (fakture) u kojoj može biti jedna ili više billing items. Ovde korisnik ili admin može da vidi kompletno stanje, zajedno sa history, kao i trenutni balans sa računa. Može da izabere period po želji, i tu mora biti sve što se tiče naplate korisnika. - Tabela invoices u kojoj se nalaze računi korisnika koje on plaća. Invoice može biti kreiran samo jednom i plaćen samo jednom. Za svako novo recurring plaćanje se kreira novi invoice. - Tabela recurring u kojoj su samo pravila kako i kada se kreiraju billing items. Znači, jednom dnevno, cronjob čita iz te tabele da li je nešto dospelo za billing i ako jeste kreira billing item Pošto se neke invoices kreiraju odmah, odnosno korisnik mora prvo da plati da bi mogao da koristi sistem, pa se tek onda aktivira servis, a neke korisnik može da plati na kraju meseca, ideja je da postoje i flag-ovi koji određuju invoice rules. Ko ima malo vremena? Neke dodatne ideje? Napomena: pitanje je samo normalizacija baze podatak, ne sam kod ili bilo šta slično. |
E sad, pošto pretpostavljam da entiteti services i premium_services poseduju neke zajedničke atribute, bez obzira koliko su različiti, u nekoj daljoj normalizaciji mogli bi da se postave kao IS_A hijerarhija.
Superklasa u ovom slučaju services, sadrži klasifikaciono obeležje, dok bi premium_services bili više povezanih podklasa sa specifičnim atributima nesvojstvenim superklasi. Primarni ključ bi se prostirao sa superklase na podklasu. Ovo je u redu ako je pretpostavka o atributima ispravna. |
Možda bi i moglo, ali teško da može biti nekog nasleđivanja, osim service_id kao primary key i service_name, sve ostalo je totalno drugačije.
|
Vreme je GMT +2. Trenutno vreme je 04:30. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.