SQL Połączenia w bazie danych

0

Cześć!

Powtarzając materiał z podstaw SQL, natrafiłem na problem. Otóż wyznaczyłem sobie za zadanie zaprojektowanie bazy, w której osoby o różnych zawodach będą mieli przyporządkowane ich twory.

Przykład, dla jasności: Mamy Pana X, który napisał książkę i Pana Y, który napisał książkę, lecz także wyreżyserował film. Chciałbym tak skonstruować tabele, aby wyświetlając dane otrzymać imię, typ "dzieła" oraz tytuł.
Przykład:

  • X, książka, "Tytul",

  • Y, ksiazka, "tytul",

  • Y, film, "tytuł"

Tworząc jedną tabelę "Osoby" i jedną "Różne twory" wszystko działa super, jednak czy moglibyście mi podpowiedzieć jak zaprojektować to, posługując się 1NF (tak przynajmniej mi się wydaje, że do tego ta zasada się odnosi :D ), rozdzielić tabele "Różne twory", na tabele, np. "Książki" i "Filmy", być może coś mi umyka ale samym join, po stworzeniu oddzielnych tabel nie potrafię tego dokonać.

0

1NF odnosi się do tego, żeby kolumny w tabeli miały charakter atomowy, tzn np. zapisując dane firmy należy w osobnej kolumnie zapisać jej nazwę i w osobnej jej adres (a jeśli będzie potrzeba wyświetlenia samej miejscowości, to również adres należy rozbić na poszczególne informacje atomowe - kod, ulicę, numer domu itp.)

W Twoim przykładzie książka i film to nadal rodzaj dzieła lub utworu. Myślę, że śmiało można je umieścić w jednej tabeli (bez pogwałcenia 1NF), o ile dane, jakie przechowujemy, to tytuł i typ utworu (gdybyśmy potrzebowali przechowywać więcej danych, to bardzo szybko okazałoby się, że jednak warto rozdzielić dane na 2 tabele - w końcu dane charakteryzujące film dość mocno różnią się od danych charakteryzujących książkę).

Gdybyś przechowywał jednak dane w dwóch tabelach, to należy skonstruować zapytanie typu

SELECT
  *
FROM
  autor A
  JOIN ksiazka K ON K.autor_id = A.id
  JOIN film F ON F.autor_id = A.id

Powyższe zapytanie zakłada istnienie trzech tabel: autor, ksiazka, film oraz, że tabela autor posiada kolumnę id, która jest w niej kluczem głównym oraz, że tabele ksiazka i film posiadają kolumnę autor_id przchowującą ID autora, który stworzył dane dzieło.

[Adam]

1 użytkowników online, w tym zalogowanych: 0, gości: 1