In meiner Geschäftslogik habe ich einen Benutzer, ein Unternehmen (Benutzer können Teil des Unternehmens sein, als Mitarbeiter, ich würde sie "Agenten" nennen) und Produkte.Entwerfen einer Datenbank zum Verfolgen des Besitzers
Ein Produkt kann von einem Benutzer oder von einem Unternehmen besessen werden, das Unternehmen kann es später einem Benutzer (Agenten) zuweisen, aber es wäre immer noch Eigentum des Unternehmens (falls das Unternehmen den Agenten auslöst).
Mein Gedanke ist, die Benutzertabelle, die Firma Tabelle und die Produkttabelle und eine Tabelle zu haben, zu verfolgen, wer der Eigentümer des Produkts ist:
--------------
| users |
--------------
| user_id |
| name |
--------------
--------------
| products |
--------------
| product_id |
| title |
--------------
--------------
| company |
--------------
| company_id |
| name |
--------------
--------------
| agents |
--------------
| agent_id |
| user_id |
| company_id |
--------------
----------------
|product_owner |
----------------
| id |
| product_id |
| user_id |
| company_id |
|agent_assigned|
----------------
Wenn das Produkt von einem Benutzer besessen wird dann nur product_id und user_id werden gefüllt. Wenn es sich um eine Firma handelt, sind product_id, company_id und agent_assigned gefüllt.
Später möchte ich ein Produkt ziehen und wissen, wer der Besitzer ist: die Benutzerinformationen, oder die Agenten- und Firmeninformationen.
Ist dies der beste Weg? Es scheint mir nicht gut zu sein.
Wir haben eine Kontaktdatenbank. Jeder Kontakt muss zu (mindestens) einer Organisation gehören, aber einige dieser Organisationen sind etwas abstrakt - z. 'Projekt x Kundengruppe'. In Ihrem Szenario würde also jedes Produkt einer Organisation gehören, auch wenn einige dieser Organisationen in gewissem Sinne fiktiv sind. Diese Frage entspricht nicht genau den Anforderungen von SO, aber ich verbessere es trotzdem, weil ich es mag. – Strawberry
Es ist nicht notwendig, company_id in product_owner zu speichern - diese Information ist bereits in der agents-Tabelle enthalten. Eine weitere Möglichkeit besteht darin, owner_id immer im selben Feld zu speichern und ein weiteres Feld hinzuzufügen, das den Owner-Typ definiert. – niyou
Warum nicht: Owner_type, Owner_ID, Slave_type, Slave_ID. Und rammt einfach jede mögliche Beziehung hinein. Auf diese Weise kann alles auf die gleiche Weise gehandhabt werden, und Sie können auch die Zuordnung von Elementen zu mehreren Eigentümern zulassen. OT = 'Unternehmen', OI = company_id_2, ST = 'Produkt', SI = product_id_25 – Viridis