MySQL bireysel olanlar için birden fazla öğe bağlamak için en iyi yolu

2 Cevap php

PHP ve MySQL ile bir site yapıyorum. Büyük fikir kayıt olabilirsiniz ve sizin profilinize nesneleri ekleyebilirsiniz olmasıdır. Siz sadece 1 profil olabilir, siz (teoride sonsuz) birden fazla öğe olabilir ve her ürün (teoride, sonsuz) Birden fazla resmi olabilir.

Ben iyi MySQL bu uygulamaya nasıl merak ediyorum. Bunu ben çeşitli veri türleri nelerdir, bir tablo yapmak için biliyorum, ama yabancı anahtarları gibi şeyler benim bellek arkasında gömülü bir şey vardır, MySQL üzerinde çok temel bir eğitim yaşadım. Ben o kadar baktım, ama anlayış biraz yavaş geliyor.

Ben sadece 3 tablolar yapabilir:

  1. Users_name + USER_ID
  2. Item_id + USER_ID
  3. Item_id + Picture_ID

Olumsuz her arama eylem, veya profil görünümü ve hatta madde görünüm için, ben overkill gibi görünüyor son iki tabloları, tüm içeriğini sorgulama olurdu olmasıdır.

Burada birisi bana yardımcı olabilir?

2 Cevap

Sizin şema aslında oldukça iyidir. Şimdi, korku tabloların tüm içeriğini sorgulamak istiyorum olmasıdır. Bu çok doğru değil, birincil ve yabancı anahtarlar iyi bir indeks verilir!

select
    u.users_name,
    i.itemid
from
    users u
    inner join items i on
        u.user_id = i.user_id
where
    u.user_id = 1234

Bu satır kümesi bile satır yüzbinlerce ile, çok hızlı bir şekilde dönecekti! Sorgu bir dizin users nerede user_id olduğu içinde satır bulmak için aramak kullanmak çünkü nedenidir. Aynı şekilde bir kez items masaya katılmak. Bu nedenle, aradığınız tüm öğeleri bulmak için sadece iki çok hızlı aramaları, ve hiç tabloları taramak zorunda kalmazsınız.

SQL kesinlikle bu malzeme için optimize edilmiştir. Yararlanmak Lütfen!

Herhangi bir öğe tek bir kullanıcı ile ilişkili olabileceğini varsaymak adil mi? Eğer öyleyse, çözüm doğrudur. Bir tek-çok ilişkisi bir tabloda bir (kullanıcı) ve başka bir yer ama en çok id ve kişinin kimliği kullanarak belirlenen sayıda (öğeler) ile tanımlanmış olmalıdır.

Bu yaparak SQL bir kullanıcıya ilişkin, diyelim ki, bir öğeyi bulmak için aramak gerekir satırları sınırlı olduğundan, sizin sorgular nispeten hızlı olmalıdır.

Kısacası, doğru.