![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Witam.
Szukam jakiegoś dobrego sposobu na rozwiązanie problemu nakładających się identyfikatorów. Mam w pierwszym systemie dwie tabele, których odpowiednikiem w drugim systemie jest jedna tabela. Problem w tym, że identyfikatory w pierwszego systemu sa przekazywane do mnie poprzez XML i każda z tych tabel daje swoje własne nie patrząc na drugą tabelę. Te niekiedy się nakładają i teraz nie wiem, jak najsensowniej (i najwydajniej) zniwelować te różnice. Przykład: Dostaję:
i chcę to umieścić w jednej tabeli u siebie i zachowac możliwość odtworzenia relacji. Gdyby id były tu unikalne, to nie byłoby problemu, bo wystarczyłaby zwykła tabela z relacjami. Jeśli ktoś ma jakiś pomysł, to będę wdzięczny za pomoc. Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Do końca chyba nie rozumiem problemu. Dlaczego nie zrobisz w tej tabeli dwóch kolumn categoryId i kindId?
-------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Nie chodzi o samo przechowywanie, tylko o relację.
Uściślę. W sklepie mam kategorie, natomiast hurtownia, z którą się łącze i z której pobieram dane ma taką dziwną strukturę, że ma i kategorie i typy. To, co jest u nich typem u mniej jest też kategorią. Piszę aplikcję tak, aby obsługa tego była przezroczysta. Problemem jest zachowanie relacji, takiej, że ID mojej kategorii odpowiada ID ich kategorii/typu. Pozdrawiam i dzięki za zainteresowanie. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Unikalność masz na dwóch kolumnach. Jedna będzie null, druga nie.
id_kategoria, id_kategoria_hurtowania, id_typ_hurtowania Ten post edytował sf 7.10.2007, 14:43:27 -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Ok sf, ale wydaje mi się, że problem z relacjami nie znika całkowicie. Bo pozostaje problem produktu który u Cysiaczka prawdopodobnie posiada ID kategorii, i jakoś musi pogodzić ze sobą mimo wszystko dwa takie same ID (to że przechowywane są w oddzielnych kolumnach niewiele daje). Wydaje mi się, że obowiązkowo produkt powinien mieć pole rozdzielające z jakiego rodzaju kategori (czy category czy kind) pochodzi. (Jeśli oczywiście rozumiem własciwie problem Cysiaczka)
Tak samo więc tabela kategorii nie musiałaby mieć dwóch kolumn odpowiadających za ID, tylko jedną nieunikalną ID i dodatkowo drugą przechowująca informację czy jest typu kind czy category. W innym wypadku faktycznie, relacje lecą "na łeb, na szyję"... Ten post edytował Nattfarinn 7.10.2007, 14:56:27 -------------------- Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Wprowadzane produkty będą powiązanie relacją z nowymi kategoriami, a te stare kategorie/typy są tylko używane przy imporcie. Możecie mi przedstawić problem na sensownym przykładzie jakiej operacji nie będzie można przeprowadzić?
Oczywiście można sobie stworzyć jedną unikalną kolumnę - budowaną na bazie np. md5, ale przy tylko dwóch parametrach wydaje mi się, że nie ma takiej potrzeby. Ten post edytował sf 7.10.2007, 15:40:01 -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 136 Pomógł: 22 Dołączył: 19.09.2007 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Nie jestem dobry w przykładach, więc przedstawię to łopatologicznie.
Importujesz kategorie (w sensie, jednocześnie category i kind). Chcesz dodać produkt posiadający jedną kolumnę category_id. Niewiele zmieni to, że w tabeli kategorii ID kind i category są w oddzielnych unikatowych kolumnach tabeli. Produkt dalej odnosi się do tylko i wyłącznie jednej wartości, a ta może występować podwójnie. I tutaj leży właśnie (tak mi się wydaje) problem. Dodanie do produktu pola odpowiadającego za identyfikowanie kategorii (zawierające czysto przykładowo wartości: kind lub category) i takiego samego w tabeli odpowiadającej za kategorię rozwiązałoby to częściowo ten problem, ale jakoś nie widzi mi się to rozwiązanie jako wyjątkowo optymalne. Edit: Wprowadzane produkty będą powiązanie relacją z nowymi kategoriami, a te stare kategorie/typy są tylko używane przy imporcie. Właśnie chodzi mi o sposób powiązania produktu z kategorią. Bo wg. czego przypiszesz produkt posiadając w bazie powtarzające się identyfikatory? Potrzebne jest coś co rozgraniczy powtarzające się wartości. Nawet coś takiego jak zapisywanie identyfikatorów kategorii w sposób: c40, c42, c47, c80, k39, k40, k41 (w zależności od kind / category ) Ten post edytował Nattfarinn 7.10.2007, 15:54:13 -------------------- Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
-- R. Pattis |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Jutro Wam powiem, czego dokładnie nie da się zrobić, bo faktycznie się nie da - muszę tylko to ubrać w jakiś przykład :|
@Nattfarinn masz bardzo dużo racji. Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.06.2025 - 18:45 |