Peki ben küçük bir video sitesi çalıştırmak ve gerçek video sayfasında en video yüzüne benzer "ilgili videolar" (örneğin YouTube) ve şu anda ben yapıyorum tüm rastgele onun etiketleri birini alarak ve diğer videolar bulgudur bir şerit var aynı etiket. Bazı sözcükler çok belirsiz ve bazı videoları mis-etiketli olarak değil, şaşırtıcı bu büyük bir yöntem değildir.
Geçerli sorgu örneği:
SELECT video_name FROM videos INNER JOIN videotags ON videos.id=videotags.video_id INNER JOIN tags ON tags.id=videotags.tag_id WHERE tag_name='x' AND videos.id<>'y' LIMIT 5
X geçerli video etiketleri herhangi biridir ve y geçerli videodan kimliği olduğu. (Ben parametreli sorgular istimal PS merak etmeyin)
Ben bütün bunları nasıl ele olarak, belki de benzer bir video başlıkları birleştirmek için daha iyi olurdu merak ediyorum?
İşte benim veritabanı tabloları kurulum nasıl olduğunu:
VIDEOS TABLE
------------
video_id [PK,auto_increment] int(11)
video_name varchar(255)
TAGS TABLE
----------
tag_id [PK,auto_increment] int(11)
tag_name varchar(255)
VIDEOTAGS TABLE
---------------
tag_id [PK,FK] int(11)
video_id [PK,FK] int(11)
Orada daha fazla sütun videoları tabloda açıkça ama bu sadece her iki tarafta otomatik artan birincil tuşları ile basit çok-çok ilişkisi göstermektedir
Site bir MySQL veritabanı ile PHP üzerine inşa edilmiştir, ama bu gerçekten önemli değil :)
EDIT: bu yüzden ben video izleme ve video puan ile ilgisi olan yarı-ilişkili olan benim diğer iki tablo yayınlamak istiyorum anlamaya organik bir rota aşağı gidiyor bazı konuşmalar oldu. Şimdi ben (evet ben değerlendirme tablosunda IP'leri depolamak biliyoruz) çünkü gizlilik sorunları özellikle video bakıldı tabloya daha fazla sütun ekleyerek herhangi bir niyeti yok unutmayın
VIDEOVIEWS TABLE
----------------
video_id [FK] int(11)
view_time datetime
VIDEORATINGS TABLE
------------------
video_id [PK,FK] int(11)
ip_address [PK] varchar(15)
rating int(1)
rate_time datetime