![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Cześć (IMG:style_emoticons/default/smile.gif)
Przeszukałem już chyba najważniejsze miejsca odnośnie klucza zbiorowego w MySQL i nadal nie bardzo wiem jak się za niego zabrać. Mój problem jest następujący: - posiadam tabele odwzorowujące strukturę uczelni [id, id_jednostki_nadrzędnej, nazwa]. - posiadam tabelę `users`, w której poprzez pojedynczą kolumnę muszę odwołać się do nazw tych tabel ze struktury. Wyczytałem, że najbardziej optymalną rzeczą, będzie utworzenie klucza zbiorowego, który "połączy" wszystkie kolumny `nazwa` tabel ze struktury. Niestety nie wyczytałem już, jak takowy klucz utworzyć. Ktoś może mnie nakierować albo napisać rozwiązanie? (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Nie słyszałem o takim pojęciu..
Users do pracownicy danej struktury? Jeżeli mogą być przypisani do jednej jednostki to po prostu w users tworzysz kolumnę z kluczem obcym id_jednostki. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Tak, `users` to pracownik danej struktury. Problem jednak w tym, że ten pracownik, może być przypisany do jednej jednostki, ale nie tylko do tej konkretnej.
Struktura uczelni: -- wydział ---- instytut ------ katedra -------- zakład No i teraz pracownik może być przypisany do jednej z powyższych tabel, ale nie zawsze tej samej. Dlatego tutaj potrzebny jest klucz zbiorowy. No i szukam rozwiązania właśnie tego problemu. |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Zbiorowy to ja slyszalem rozne pojecia na to, ale nie klucz (IMG:style_emoticons/default/wink.gif)
Tabele: STRUKURA id id_nadrzedna nazwa USER id name surname blabla STRUKTURA_USER - wiaze usera ze struktura id_struktura id_user |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, czyli zamiast połączenia bezpośredniego utworzyć tabelę, która będzie łączącą? Tylko że wydział, instytut, katedra i zakład to osobne tabele. Każda z nich ma własne id, id_nadrzędne i nazwę. Dlatego chciałem utworzyć klucz zbiorowy po nazwie, bo jest unikalna dla wszystkich tabel.
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A czemu to jest zrobione jako oddzielne tabele? Przeciez to nei ma sensu...
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
No a jak to inaczej rozpisać? Skoro chciałbym, żeby można było dodawać rekordy? W jednej tabeli i klucz obcy do samej siebie?
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat W jednej tabeli i klucz obcy do samej siebie? Dokladnie.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Czyli chodzi o takie rozwiązanie? http://iv.pl/images/09091836863351152204.png
Bo ja rozmyślałem nad takim: http://iv.pl/images/33495087204453087808.png tylko nie wiedziałem jak to połączyć. Ten post edytował Salvation 17.03.2016, 13:45:41 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Twoje stare rozwiazanie bylo zle.
Nowe jest ok. Tylko zmien te K na C bo KLUJE w oczy. ps: users_structure nie potrzebuje oddzielnego klucza glownego. wystarczy id_users i id_structure jako klucz glowny |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ah, literówka (IMG:style_emoticons/default/biggrin.gif) wybacz.
Co do tego "PS.", to id_cs mogę usunąć PRIMARY_KEY (i przypisać go do reszty?), ale muszę zostawić raczej AUTOINCREMENT czy go też usunąć? |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie, w tabeli wiazacej nie ma zadnego autoincrement. Tam beda trafialy przeciez ID okreslone przez Ciebie
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Czyli tak na prawdę nie potrzeba tej kolumny ID_CS w takim razie. Tylko teraz pytanie czy to się nie będzie gryźć, bo z tego co wiem, jednak potrzeba PRIMARY_KEY w tabeli.
|
|
|
![]()
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No przeciez mowilem, ze id_cs masz wywalic a klucz glowny storzyc z pol id_user i id_structure
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 406 Pomógł: 73 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie za zmienienie toku myślenia (IMG:style_emoticons/default/smile.gif) można zamknąć.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 02:18 |