Rada odnośnie wydajności bazy danych.

0

Witam,
Jestem nowy na forum i stosunkowo nowy w programowaniu. Chciałbym zaczerpnąć porady co do stworzenia bazy danych od kogoś bardziej doświadczonego, także jeżeli ktoś będzie miał ochotę mi pomóc to będę wdzięczny :)

Chciałbym stworzyć bazę danych, która w jednej tabeli będzie zawierała finalny produkt, a w drugiej półprodukty. Każdy finalny produkt będzie składał się z niezdefiniowanej ilości półproduktów. Moim celem będzie szukanie finalnego produktu, który składa się z podanych przeze mnie półproduktów.
Czyli np.
Produkt A(finalny) = półprodukt a, półprodukt b, półprodukt c
Produkt B(finalny) = półprodukt a, półprodukt b, półprodukt c
Produkt C(finalny) = półprodukt a, półprodukt b, półprodukt c, półprodukt d

Ja szukając po bazie po trzech wymienionych półproduktach(a,b,c) chciałbym otrzymać produkt A oraz produkt B.
Miałem pomysł taki, żeby do każdego produktu finalnego podawać w bazie półprodukty po przecinku(1,2,3), a późnej robić zwykłe LIKE 1,2,3, ale domyślam się, że rozwiązanie jest niezbyt wydajne.
Proszę o sugestię jak mogę rozwiązać problem możliwie najwydajniej.
Pozdrawiam!

3

Nie podchodziłym do tego tak, jedna tabela na produkty/polprodukty/części, w końcu pólproduktA może być może być zbudowany z półprodukt X i półprodukt Y, i do tego tabela:
produkt, części
A, pA
A, pB
A, pC
B, pA
B, pB
B, pC
C, pA
C, pB
C, pC
C, pD

I teraz bez zagłębiania się w konkretny silnik:

select
   produkt
from t
group by produkt 
having sum(case when części in ('pA','pB','pC') then 1 else -1 end) = 3
1

Ja by to zrobił tak: po pierwsze zdefiniowałbym słowników indeksów/materiałów - był by to słownik z półproduktami, produktami gotowymi, materiałami i do tego dołożył tabelę z wiązaniami do półproduktów. Czyli w drugiej tabli miałbyś wiązanie po dwóch kluczach obcych (produkt i półprodukty — półprodukty mogą być produktami w innym procesie) do tabeli z definicją materiałów.

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