Új hozzászólás Aktív témák

  • Silεncε

    őstag

    válasz bozsozso #13137 üzenetére

    Táblák (disclamer: nem vagyok profi DB-tervező, szóval nem feltétlenül hibátlan):

    Termékek táblában mezőnévbe kellene:
    Termék kód
    Termék név
    Termék ár
    Anyag kód1
    Anyag kód2
    sorban folytatva ami megjelenik az anyagok táblában

    Kód-név-ár: ezek jók, ha ennyit akarsz csak tárolni.
    Anyag kód..: na innentől jönnek a bajok. Egy SQL-sémában az oszlopok meg van előre határozva, szóval olyanokat nem tudsz csinálni, hogy egy rekordnak ugyanabban a táblában más oszlopai vannak mint egy másiknak (NoSQL-t meg a többit ne keverjük most ide…). Ennek megoldása lenne, ha például minden anyag kódot felvennél oszlopnak, és amelyik termékben nincs x anyag, annak oszlopa null. Ilyet viszont nem csinálunk (a tábla nagy része NULL-okkal lenne tele + mivel anyagot is szeretnél később hozzáadni, ezért minden egyes anyag hozzáadása után módosítani kéne a termék táblát, új oszlopot hozzáadva, ami megoldható ugyan, de na...). Másik megoldás, hogy csinálsz egy többértékű attribútumot, aminek értékei felsorolva az anyag kódok. Ha nem akarsz SQL-el az anyagkódok között matatni, megoldás lehet, de előfordulhat, hogy túl sok anyagkód kerül egy fieldbe, nem fér bele. Többértékű attribútumokat nem szeretjük, normalizálás első lépése, hogy ezeket kukázzuk.
    Szerintem a legjobb megoldás, ha csinálsz egy külön táblát, ahol a termék-anyag kapcsolatokat kezeled, pl:

    Termék kód
    Anyag kód

    Anyagok táblában mezőnévbe:
    Anyag kód
    Anyag név
    Anyag ár

    Ez jó.

    Rendelt tábla mezőnév:
    dátum
    Termék kód1
    Termék kód2
    stb.
    ezt is automatikusan kellene vennie a termékek táblából

    Ezt hasonlóan csinálnám, mint a legelsőt, illetve a dátumtól függ, de én tennék ide egy ID-t, bár ha mondjuk TIMESTAMP a dátum, akkor az már eléggé egyedi kulcsnak.

    Szállított tábla mezőnév:
    Egység
    dátum
    szállítólevél száma
    Termék kód1
    Termék kód2
    stb.
    ezt is automatikusan kellene vennie a termékek táblából

    Ez pedig ua mint az előző

Új hozzászólás Aktív témák