Wohnungsbaugesellschaft-management-system Datenbank-Struktur

Ich bin der Gestaltung billing-Struktur für den Wohnungsbau Gesellschaft gestern habe ich gegoogelt und durchgemacht-banking-Abrechnung Struktur und entwickelt, meine Datenbank-Struktur, aber ich bin nicht sicher, ob das richtig wäre. Also ich setze meine Rechnung-Datenbank-Struktur.

Sagen Sie mir bitte, wenn ich falsch bin, wo jeder oder jede änderung muss getan werden, meine Datenbank-Struktur.

Und noch eine Fragen, wo ich posten, um die Gesellschaft balance (EC -, Kredit -) wie zB Kosten Bldg Versicherung und Einkommen wie Adv board Horten und auch nicht sicher über die balance audit-trail (nachdem es in der Transaktion Tabelle der separaten Tabelle mit der Transaktion-id als FK).

Bitte beachten Sie, alle-Tabelle wird standardmäßig erstellt haben,verändert die Zeit und die ip-Adresse

Tabelle billingstatement

id   | description                        |  amount  | Bill Month  | userId   | societyId 
 1   | Maint Chrg 1000 sqft x 5 per sqft  |  5000    | Aug-16      | 1001     |  101      
 2   | Water Charges                      |   200    | Aug-16      | 1001     |  101       
 3   | Construction Charges               |   300    | Aug-16      | 1001     |  101
 4   | Reserved Parking chrgs             |   500    | Aug-16      | 1001     |  101

Tisch-Konten

id   | balance(current bal) |  societyId  | modifiedTime         |
 1   | -6000                |   101       | 2016-01-01 21:01:01  |
 2   | -5000                |   101       | 2016-01-01 21:01:01  |
 3   | 1000                 |   101       | 2016-01-01 21:01:01  | 

Tisch-Transaktion

id  |  amount |  balance | trans_type | trans_time          | account_id | 
 1  |  6000   |   0      |    1       | 2016-01-01 21:01:01 | 1          | 
 2  |  5500   | -6000    |    1       | 2016-02-01 21:01:01 | 2          | 

tran_type :- 1 = Payment by user, 2 = Income to society, 3 = Expense to society

Tabelle map_account_user

map_id | account_id | user_id
 1     |  2         | 1001

Wenn Konto-Zuordnung nicht vorhanden ist, dann bedeutet es, es ist eine Gesellschaft, Konto und ein Benutzer Konto.

Referenz :-

billing-banking-desing

banking Projekt-Beispiel

  • Keine Tabelle namens „Eigenschaften“ ? Ich kann mir vorstellen, Sie wollen die Analyse von Daten pro Gebäude.
InformationsquelleAutor pise | 2016-09-10



4 Replies
  1. 0

    Ich nehme an, Sie sind der Gestaltung einer relationalen Datenbank. In einer relationalen Datenbank, Sie normalisieren der Daten.

    Ich habe Probleme, nach Ihrer Datenbank-design, weil Sie zu viele verschiedene Felder mit dem Namen id. Jedes id-Feld soll einen eindeutigen Namen, damit die Leute sagen können, was die verschiedenen id-Felder stellen.

    Beginnen wir mit der Transaktion Tabelle. In der Regel Tabellennamen im singular. Ich Großbuchstaben-Tabelle und Spaltennamen. Sie haben nicht zu Folgen, dass die Konvention.

    Transaction
    -----------
    Transaction ID
    Transaction Type
    User ID
    Society Account
    Transaction Amount
    Transaction Time Stamp
    ...

    Transaktions-ID ein auto-increment-integer. Es ist auch die primäre (clustering) – Taste, um die Transaktion Tabelle. Transaktionstyp 1 = Zahlung durch den Benutzer, 2 = Einnahmen für die Gesellschaft, 3 = Kosten für die Gesellschaft. Ich bin mir nicht sicher, was der Unterschied ist zwischen Transaktions-Typ 1 und Vorgangsart 2.

    Entweder die Benutzer-ID oder die Gesellschaft Spalte Konto ist gefüllt. Die Benutzer-ID-Spalte gefüllt ist in der Transaktion Typ-1-und die Gesellschaft Spalte Konto gefüllt wird, die für die Transaktion Typen 2 und 3. Die nicht ausgefüllten Spalte auf null festgelegt ist.

    Transaktionsbetrag ist immer ein positiver Wert. Ihr code subtrahieren, Betrag der Transaktion von der Gesellschaft Konto für die Transaktion Geben 3.

    Erstellen Sie einen eindeutigen index für (Benutzer-ID, Transaktions-Zeitstempel absteigend, Transaktions-ID) und einen eindeutigen index für (Gesellschaft Konto -, Transaktions-Zeitstempel absteigend, Transaktions-ID). Dies ermöglicht Ihnen, schnell alle Transaktionen eines Benutzers oder der Gesellschaft Konto für einen bestimmten Monat.

    Als Nächstes schauen wir uns die UserAccountBalance Tabelle.

    UserAccountBalance
    ------------------
    User ID
    Balance Year and Month
    Balance Amount
    ...

    Den Primärschlüssel dieser Tabelle ist (Benutzer-ID, Gleichgewicht, Jahr und Monat absteigend). Sie pflegen die historische Salden für jeden Monat für jede Benutzer-ID. Dies ermöglicht einen Abschlussprüfer zu prüfen, die Salden durch das ausführen von Abfragen gegen die Transaktion Tabelle.

    Als Nächstes schauen wir uns die SocietyAccountBalance Tabelle.

    SocietyAccountBalance
    ---------------------
    Society Account
    Balance Year and Month
    Balance Amount
    ...

    Diese Tabelle ist ähnlich wie die UserAccountBalance Tabelle, sondern auch für die Gesellschaft-Konten.

    Als Nächstes schauen wir uns die Rechnungs-Tabelle

    Billing
    -------
    User ID
    Billing Year and Month
    Billing Type
    Square Feet
    Charge per Square Foot
    Total Charge
    ...    

    Den primary key ist (Benutzer-ID, Rechnungs-Jahr und Monat, absteigend, Rechnungs-Typ). Ich gehe davon aus, dass Sie nur eine Abrechnung Preis pro Abrechnung geben pro Monat.

    Fakturaart 1 = Erhaltungsladung, 2 = Wasser Kostenlos, 3 = Aufbau Kostenlos, 4 = Reserviert Parken Kostenlos. Sie können die Generierung der text auf der Rechnung von den Werten in dieser Tabelle, so gibt es keine Notwendigkeit zum speichern der text in die Datenbank. Die Quadratmeter und Kosten pro Quadratmeter Spalten ausgefüllt sind für die Rechnungsstellung Geben Sie 1 ein, ansonsten sind Sie null.

    Haben Sie immer noch zu entsprechen, die Zahlungen mit der billings -, aber dies sollte genug sein, zum du zu erhalten begannen auf dem richtigen Weg.

    • Ich habe eine Frage bezüglich Kontostand audit-trail .Ich habe nicht verstanden, über audit-trail, korrigiert mich wenn ich falsch bin. Du meinst, bleiben für jeden 1. Tag des Monats habe ich neue Zeile für jeden Benutzer und jede Gesellschaft Konto-Tabelle mit öffnen-balance
    • Ja. Am ersten Tag jeden Monats, erstellen Sie ein neues Gleichgewicht Betrag der Zeile für die Benutzer und die Gesellschaft-Konten.
    • aber dann, wenn keine Transaktion für, das Monat für einen bestimmten Benutzer dann, wie die neue Zeile Eröffnungsbilanz bekommen erstellen oder muss ich sonst noch ausführen eines batch-Prozesses für das?
    • Ja, Sie haben zum ausführen eines batch-Prozesses zu erstellen, die alle der Saldo Zeilen.
  2. 1

    Ich habe ein zögern bei der Speicherung ein Aggregat mit dem Unternehmen. Es sei denn, das Aggregat ist sehr schwierig zu berechnen, sollten Sie berücksichtigen immer diese durch die Untersuchung der details.

  3. 0

    Wirklich zu schätzen für Ihre Bemühungen. Sie verweisen auf banking-system ist wirklich eine beste Ansatz. Ich möchte Ihnen einige Ideen, die Ihnen helfen können, wenn Sie fühlen, dass es für Sie besser ist.

    Können beginnen,

    Wenn Sie sich mit Ihrer Spalte Beschreibung Daten

    {Wassergebühren

    Bau-Kosten

    Parkplatz chrgs}

    als neue Spalten, Ihr keine der Zeilen verringert werden, und da kann man eine effiziente Pflege der Daten. Für jede userId können Sie eine einzige Zeile von Daten, anstatt die Aufrechterhaltung der vier Zeilen. Nur überprüfen Sie unten zur Verfügung gestellt Beispiel.
    Für jedes sq ft können Sie eine Beschreibung der Spalte getrennt.

    id | userId | societyId | BillMonth | MaintChrg | WaterCharges | ConstructionCharges | ReservedParkingCharges | Description
    1  | 1001   | 101       | Aug-16    | 5000      | 200          | 300                  | 500                   |  Maint Chrg 1000 sqft x 5 per sqft
    2  | 1002   | 101       | Aug-16    | 4000      | 200          | 300                  | 500                   |  Maint Chrg 900 sqft x 5 per sqft
    3  | 1003   | 102       | Aug-16    | 5000      | 200          | 300                  | 500                   |  Maint Chrg 900 sqft x 5 per sqft

    Für Sie Zweifel an debit-und Kredit-Nutzung,

    debit-als expenseBldginsurance

    Kredit als Adv board Horten

    Sie können auch hinzufügen, können andere Spalten wie user-name, Nicht der Völker, die Stromkosten .etc.,.

    Hoffe, nützlich für Sie. In Fall müssen Sie mehr Klarheit, gib einfach einen Kommentar

    • Ich verstehe nicht, wie drängen Gebühren aus Spalte klug wäre eine gute Idee. Was tun Sie, wenn neue Ladungen Hinzugefügt werden? How do you lookup alle Gebühren, die größer oder gleich einem Wert unabhängig von der Art?
    • Hi Ross, zu sehen, ob die Gebühren sind innerhalb der gleichen Spalte, wie eine Daten, für jede Benutzer-id mehrere Zeilen angelegt werden, welche Ursachen zu besetzen, großen Speicherplatz und die Verwaltung von mehreren Zeilen für den gleichen Benutzer ist nicht eine richtige Weg, in der Datenbank Strategie
    • wie sagte ross was, wenn ich das hinzufügen von neuen Gebühren habe ich auf Spalte hinzufügen, und ich glaube nicht, dass es sein könnte gute Idee, fügen Sie neue Spalte für jede neue Gebühren. Trotzdem vielen Dank für die Idee
    • Verwalten mehrere Gebühren, wie eine Daten-und Pflege gleiche user in mehreren Spalten ist irrelevant. So eine Vorlage haben, der alle Gebühren, die Sie benötigen, und erstellen Sie eine Tabelle mit Ihnen. So, dass es eine einzelne Zeile von Daten für einen einzelnen Benutzer und nicht als Behandlung in andere Zeile
    • Macaulay: Relationale Datenbanken sind entworfen, um Zeilen mehr effizient, dass die Spalten.
  4. 0

    Die Struktur funktioniert. Ich würde ändern Sie die id-Benennung von etwas.

    account_id verwiesen wird, in einigen Orten
    aber in der Tabelle ist Id.

    Ich würde es account_id in der Tabelle. Dies macht es einfacher zu suchen, in dem Sie beitreten können, für die Benutzer der Datenbank. Jeder Ort, den Sie nennen es „Account_Id“ ist, sollte das gleiche Account_Id mit einem einzigen master-Tabelle, die Sie erzeugt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.