Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wykorzystanie relacji w bazie
AniaR
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 6.05.2009
Skąd: warszawa

Ostrzeżenie: (0%)
-----


Projektuje teraz dość dużą bazę i chcialabym sie upewnic czy dobrze rozumiem pojęcie realcji i kluczy obcych..
Majac dwie tabele:


  1. CREATE TABLE `okregi` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(200) NOT NULL,
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=latin2 AUTO_INCREMENT=20 ;



  1. CREATE TABLE `o_biogramy` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_okregu` int(11) NOT NULL,
  4. `imie` varchar(200) NOT NULL
  5. PRIMARY KEY (`id`),
  6. KEY `biogramy_id_okregu_IND` (`id_okregu`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=latin2 AUTO_INCREMENT=5 ;
  8.  
  9. --
  10. -- Ograniczenia dla tabeli `o_biogramy`
  11. --
  12. ALTER TABLE `o_biogramy`
  13. ADD CONSTRAINT `biogramy_id_okregu_FK` FOREIGN KEY (`id_okregu`) REFERENCES `okregi` (`id`);


Tabele o_biogramy polaczylam z tabela okregi nadajac polu id_okregu najpierw INDEX a potem FOREIGN KEY.
To znaczy ze juz utworzylam relacje miedzy tymi tabelami?
Czy pole id w tabeli okregi nie powinno sie nazywac id_okregu? tak samo jak w tabeli o_biogramy?

Chodzi mi o to ze nadajac te relacje w bazie czyli ten klucz obcy i tak dane do bazy wprowadzam w taki sam sposob jak by nie bylo tej relacji.. Czyli:

najpierw odczytuje id okregu ktore jest mi potrzebne a potem
  1. <?php
  2. $query= "INSERT INTO  o_biogramy (id, id_okregu, imie ) values (null, '$id','$imie')";
  3. ?>


Czy nie po to sie tworzy te relacje aby nie trzeba bylo juz podawac samemu tego id_okregu do bazy o_biogramy ?

Bo jezeli nie to jaka jest roznica czy da sie ten FK czy nie skoro i tak wprowadzam i odczytuje dane z bazy w taki sam sposob?

Czy konieczne jest tworzenie kluczy obcych jezeli do tej pory radzilam dobie bez nich?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
omeck
post
Post #2





Grupa: Zarejestrowani
Postów: 79
Pomógł: 7
Dołączył: 2.07.2005
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(AniaR @ 8.07.2009, 16:09:18 ) *
Projektuje teraz dość dużą bazę i chcialabym sie upewnic czy dobrze rozumiem pojęcie realcji i kluczy obcych..
...
Tabele o_biogramy polaczylam z tabela okregi nadajac polu id_okregu najpierw INDEX a potem FOREIGN KEY.
To znaczy ze juz utworzylam relacje miedzy tymi tabelami?


tak

Cytat(AniaR @ 8.07.2009, 16:09:18 ) *
Czy pole id w tabeli okregi nie powinno sie nazywac id_okregu? tak samo jak w tabeli o_biogramy?


to nie ma znaczenia - pole możesz nazwać, jak chcesz, byleby tylko klucz główny i obcy były tego samego typu

Cytat(AniaR @ 8.07.2009, 16:09:18 ) *
Chodzi mi o to ze nadajac te relacje w bazie czyli ten klucz obcy i tak dane do bazy wprowadzam w taki sam sposob jak by nie bylo

Czy nie po to sie tworzy te relacje aby nie trzeba bylo juz podawac samemu tego id_okregu do bazy o_biogramy ?

Bo jezeli nie to jaka jest roznica czy da sie ten FK czy nie skoro i tak wprowadzam i odczytuje dane z bazy w taki sam sposob?

Czy konieczne jest tworzenie kluczy obcych jezeli do tej pory radzilam dobie bez nich?


Relacje tworzy się, żeby zachować m.in integralność danych (możesz poczytać chociazby o: http://pl.wikipedia.org/wiki/ACID). Jeśli relacje są zdefiniowane, to np. nie możesz do bazy dodać glupot - nie dodasz do tabelki o_biogramy rekordu, którego pole id_okregu nie wskazuje na klucz główny, który istnieje w bazie. Możesz też ustawić kaskadowe operacje - usuwanie, edycja

Kluczy obcych nie musisz stosować, jeśli korzystasz z mysami, ale... ten silnik to zło (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) trzymaj się innodb (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)

Ten post edytował omeck 8.07.2009, 21:15:00
Go to the top of the page
+Quote Post
AniaR
post
Post #3





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 6.05.2009
Skąd: warszawa

Ostrzeżenie: (0%)
-----


Ok, dzieki:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 06:05