Announcement

Collapse
No announcement yet.

Tabelle mit mehrere Untertabellen normalisieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tabelle mit mehrere Untertabellen normalisieren

    Hallo,
    ich habe eine category-Tabelle und mehrere Untertabellen (category_application, category_server,...) zu dieser Tabelle. Der User soll aus der Tabelle category über select-Feld ein Eintrag auswählen und aus der zugehörige Untertabelle ebenfalls. (Siehe bitte den Anhang) Die Beide Einträge sollen in einer message-Tabelle eingefügt und angezeigt werden können. d.h. Ich brauche category_application_name und category_server_name usw. Wie kann ich das normalisiert realisieren? wie sehen die neue Tabellen aus? Vielen Dank für eure Antworten.
    Gruß
    Kiumars
    Attached Files

  • kjahandel
    commented on 's reply
    Vielen Dank Christian für die schnelle Antwort. ich habe ganze Menge Tabellen, die eine Beziehung zu message_tabelle haben. ich möchte gerne die Tabellen zeigen, ich kann hier kein Datenbank dump hochladen.
    Zuletzt editiert von kjahandel; 24.05.2020, 10:03.

  • Christian Marquardt
    replied
    Wenn eine Message aus der Tabelle message mit anderen Tabellen gejoint werden soll. muss die einzelne Message ihre Datensätzen aus den anderen Tabellen erkennen können
    Soll die Message mit der Tabelle message_category gejoint werden, muss die Tabelle message_category eine ID der Tabelle message enthalten (message_id)

    select * from message as m
    left join message_category as mcat on m.id=mcat.message_id

    Soll weiterhin die Tabelle categorie dazujejoint werden, so erhält diese ebenfalls eine ID der Tabelle message (message_id)

    select * from message as m
    left join message_category as mcat on m.id=mcat.message_id
    left join category as c on m.id=c.message_id

    Das gilt natürlich nur, wenn es eine "führende" Tabelle gibt, auf die sich die anderen beziehen

    Gibt es mehrere führende Tabellen, wenn bsp. die message_category von der categorie ableitet, ist zwischen diesen eine FK Beziehung herzustellen

    select * from message as m
    left join message_category as mcat on m.id=mcat.message_id
    left join category as c on mcat.id=c.message_categorie_id

    Du musst prüfen, in welchen Tabellen du eine 1:n Beziehung hast
    Zuletzt editiert von Christian Marquardt; 23.05.2020, 06:53.

    Leave a comment:


  • kjahandel
    commented on 's reply
    Jeder items in category-Liste (category-Tabelle) hat eigene Tabelle z.B. Applikation hat die Tabelle category_application) .
    Es soll bei der Erstellung eines Tickets aus diese beide Tabellen jeweils ein item ausgewählt werden und in message-Tabelle eingefügt werden.
    Ich möchte nicht in der message-Tabelle die fremd-schlüssel category_id haben, daher erstelle ich eine neue Tabelle wie z.B. message_category

    ALSO ich möchte category_id nicht in message_tabelle haben. brauche ich überhaupt außer message_category weitere neue Tabellen? Es geht eigentlich um Abfragen und das joinen der Tabellen?


    message
    -------------

    id list_id ( (category_id ) )
    --------------------------
    1
    2
    3
    4
    5



    category
    ---------------

    id category_name
    ---------------------
    1 Keine
    2 Application
    3 Server
    4 End User Asset
    5 Network




    message_category
    ---------------

    id list_id category_id
    ---------------------------------
    1
    2
    3
    4
    5



    die Unterkategorien:

    category_application
    --------------------------
    id category_application_name
    ---------------------------------
    1 Keine
    2 Business Application
    3 End User and Client Application
    4 Service Management Application




    category_server
    ---------------------

    id category_server_name
    ----------------------------
    1 Keine
    2 Linux
    3 Unix
    4 Windows




    end_user_asset
    --------------------

    id end_user_asset_name
    ---------------------------
    1 Keine
    2 A
    3 B
    4 C




    category_network
    ----------------------

    id category_network_name
    -----------------------------
    1 Keine
    2 A
    3 B
    4 C




    Neue Tabellen:


    message_category_application
    ----------------------------

    id list_id category_application_id
    ---------------------------------------






    message_category_server
    -----------------------

    id list_id category_server_id
    ----------------------------------






    message_end_user_asset
    ---------------------

    id list_id end_user_asset_id
    -------------------------------






    message_category_network
    ------------------------

    id list_id category_network_id
    -------------------------------------








    SELECT m.list_id AS list_id,

    cat.category_name AS category_name,
    mca.category_application_name AS category_application_name,
    cs.category_server_name AS category_server_name

    FROM message as m


    LEFT JOIN message_category AS mcat ON mcat.list_id = m.list_id
    LEFT JOIN category AS cat ON cat.id = mcat.category_id

    LEFT JOIN message_category_application AS mca ON mca.list_id = m.list_id
    LEFT JOIN category_application AS ca ON ca.id = mca.category_application_id

    LEFT JOIN message_category_server AS mcs ON mcs.list_id = m.list_id
    LEFT JOIN category_server AS cs ON cs.id = mcs.category_server_id


    Usw...
    Zuletzt editiert von kjahandel; 23.05.2020, 06:28.

  • Christian Marquardt
    replied
    Mir erschließt sich aus den wenigen Angaben der Zusammenhang der Tabellen nicht
    https://de.wikipedia.org/wiki/Normal...ormalform_(2NF)
    Weiterhin worum geht es hier?
    Um die Erstellung der Tabellen und die Realisierung der FKs?
    Um eine Abfrage und das joinen der Tabellen?
    Was sind "Neue Tabellen"?

    Leave a comment:

Working...
X