Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Proszę o uwagi do diagramu ER
Forum PHP.pl > Forum > Bazy danych
twojastara
Czy mogę mieć klucze obce o tych samych nazwach?


Proszę o rzucenie okiem na diagram i uwagi. pierwszy raz taki diagram robię.

Pyton_000
Klient/Pracownik - zbędne dublowanie danych
Logowanie - bezsensowne, bo nic z tej tabeli nie wynika
Powinieneś zdublować dane w przypadku zamówionych produktów. O ile teoretycznie nazwa książki się nie zmienia, to dobrze jest mieć dane na podstawie których została wystawiona faktura np. w przypaku usunięcia produktów z BD.

To tak na szybko.

Klucze obce musza mieć unikalne nazwy w obrębie bazy.
twojastara
Cytat(Pyton_000 @ 4.02.2015, 20:29:51 ) *
Logowanie - bezsensowne, bo nic z tej tabeli nie wynika

Logowanie, by w jednym miejscu mieć wszystkie loginy. Nie będę się upierac, że ma to większy sens.

Cytat(Pyton_000 @ 4.02.2015, 20:29:51 ) *
Powinieneś zdublować dane w przypadku zamówionych produktów.

Czyli np do tabeli faktura mogę wrzucić te dane?

Cytat(Pyton_000 @ 4.02.2015, 20:29:51 ) *
Klucze obce musza mieć unikalne nazwy w obrębie bazy.

a czy nie wystarczy w fragmencie
  1. CONSTRAINT `idLogowanie`
  2. FOREIGN KEY (`idLogowanie`)
  3. REFERENCES `Szobuk`.`Logowanie` (`idLogowanie`)

(zakładając, że powtarzającym się w bazie kluczem obcym jest `idLogowanie`) zmienić nazwę przy CONSTRAINT `idLogowanie`na inną? czy muszę zmienić w tabelach wszystkie powtarzające się nazwy pól FK.
Pyton_000
Cytat
Logowanie, by w jednym miejscu mieć wszystkie loginy. Nie będę się upierac, że ma to większy sens.

Po co, jak wywalisz tabele pracownik to i login nie potrzebne. Już 2 tabele mniej

Cytat
Czyli np do tabeli faktura mogę wrzucić te dane?

Nie, do zamówienie produkt bo to tam trzymasz dane o pozycjach faktury. Dane adresowe faktury masz już w innej tabeli, co może w sumie zostać, ale też nie musi. Chyba że Dane_sprzedawcy użyjesz również jako dane do FV jak i dane do Wysyłki (razem 2 adresy)

Ad FK, to sama nazwa Klucza (constraint) musi być unikalna. Nazwy kluczy w tabelach nie muszą być unikalne.
twojastara
Wolę się się upewnić.

Dublowanie danych polega na tym, że w tabeli z dublowanymi danymi wstawiam pola, oznaczam je jako FK i podaję REFERENCES `tabelaRodzic`(poleDublowane). I by nie zmieniały swoich wartości w przyszłości podaję
  1. ON DELETE NO ACTION
  2. ON UPDATE NO ACTION


Bo ja sobie wcześniej po prostu wpisałem w tabelę`Zamowienie_Produkt`powtórzone pola z tabeli `Ksiazka`, bez oznaczenia ich jak FK.
Pyton_000
Nie, dublowanie to dublowanie czyli masz stworzyć pole np. Nazwa_ksiazki i wpisać tam dokładnie to samo co jest nazwą książki. Żadnych kluczy itp. Bo co Ci da jak dasz klucze FK, nawet jak dasz No Action to jak wywalisz oryginał z tabeli książki to już nie odzyskasz tytułu na zamówieniu.
twojastara
Dobra, już jasne. Dzięki. (Strasznie głupie to pytanie poprzednie, teraz aż się dziwie, że mnie zrozumiałeś. Przez chwilę nie ogarniałem do czego służy tabela `Zamowienie_Produkt`)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.