Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie do bazy z hierarchia...
Forum PHP.pl > Forum > Bazy danych
ins@ne
Robie projekt bazy danych, tzn. juz zrobilem i gdzies tam po drodze pojawila mi sie hierarchia. Generalizacja to Plyta, ktora pod soba ma kilka specjalizacji. Jedna z nich jest Audio. Tworze to tak:

[sql:1:3cd461e388]CREATE TABLE Plyty
(
IDPlyty smallint
IDENTITY(1,1) PRIMARY KEY,
TytulPlyty varchar(50) NOT NULL,
Kategoria varchar(20) NOT NULL,
Nosniki varchar(10) NOT NULL
FOREIGN KEY REFERENCES Nosniki(TypNosnika),
Stany varchar(10) NOT NULL
FOREIGN KEY REFERENCES Stany(Stan)
)
CREATE TABLE Audio
(
IDPlyty smallint
IDENTITY(1,1) PRIMARY KEY,
Wykonawca varchar(50) NOT NULL,
RokWydania varchar(4) NULL
CHECK (RokWydania LIKE '[1-2][0-9][0-9][0-9]'),
Wytwornia varchar(50) NULL,
SpisUtworow text NULL,
GatunkiMuzyczne varchar(30) NOT NULL
FOREIGN KEY REFERENCES GatunkiMuzyczne(Gatunek)
)[/sql:1:3cd461e388]
A problem mam taki, ze gdy teraz chce dodac wpis do Audio to nie wiem jak dodac Tytul, ktory jest juz w generalizacji :|. Probowalem przez jakis nieudolny inner join, ale oczywiscie dostalem blad :|.
No i moje pytanie. Jak dodawac takie dane do bazy kiedy jedna czesc jest w jednej tabeli a druga w drugiej? Czy musze dodac np. do Plyty informacje o tej plycie, a potem ja "doedytowac" w Audio?
Indeo
Tak. Wpis do każdej z powiązanych tabel musisz zrobić osobno i to w kolejności takiej żeby nie naruszyć klucza obcego tzn. najpierw musisz wprowadzić rodzica a potem dopiero potomka, bo nie można przypisać potomka do nieistniejącego jeszcze rodzica.
Najlepiej i najbezpieczniej jest użyć także transakcji.
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.