Bir şarkı sözleri site için veritabanı tasarımı

7 Cevap php

PHP ve MySQL için yeni. Benim proje için ben şarkı sözleri için bir site yapmak istiyorum. Veritabanı ve ilişkileri tasarımı nasıl?

İşte ben bugüne kadar ne var:

Artist

  • Artist_id
  • ARTIST_NAME
  • Artist_bio
  • Artist_thumb

Albums

  • Album_ID
  • Artist_id
  • Genre_id
  • ALBUM_TITLE
  • Release_year

Genre

  • genre_id
  • genre_name

Tracks

  • track_id
  • track_title
  • Album_ID

Yanılıyorsam lütfen bana bildirin.

7 Cevap

Ben kuvvetle WWWSQLDesigner veritabanı tasarım öneririz. Yönerge bu brianreavis söylemiştik dinleme gerçekten layık. Her zaman doğru yazımını kullanmak tutarlı dilbilgisi, harf ve altını (_) kullanın. Ayrıca bir ilişki tablosunu kullanarak birden türler eklemeyi düşünebilirsiniz.

  album_genre ( id int, album int, genre int )

Albüm veya sanatçı resim için, ben onların ilgili id ​​yıllardan ile bir klasöre kaydetmek için öneririz. Gözlemlemek,

 id = 14
 artist = 42
 title = Mask And Mirror
 year = 1994

 thumbnail: /thumbnails/album-14.jpg
  1. Be consistent with whether your table isims are singular or plural. My preference is singular, because then when you're doing multi-table queries, you can refer to a column simply as "track.kimlik", rather than "tracks.kimlik".

  2. Ensure all your table and field isims are spelled correctly (i.e. "genre"); this is something that's a pain to change later.

  3. Son olarak, ben onların ana tablonun adı ile sütun adlarını önek olarak tavsiye etmem. Bu sadece gereksiz değil.


artist

  • kimlik
  • isim
  • bio
  • başparmak

album

  • kimlik
  • artist_kimlik
  • genre_kimlik
  • başlık
  • release_year

genre

  • kimlik
  • isim

track

  • kimlik
  • başlık
  • album_kimlik

Sizin tasarım oldukça iyi görünüyor. Eklemek istediğiniz bazı ek tablolar:

  • Playlist
  • PlaylistTrack
  • PlayedTrack

Sen Parça tabloya ek alanlar eklemek olabilir. Örneğin:

  • trackSortOrder
  • trackYear
  • trackGenre
  • trackLength
  • userRating
  • BitRate
  • yazar
  • telif hakkı
  • numberOfPlays
  • lastPlayedDate
  • EklenenTarih

Tasarımı yaparken kendinize sorması gereken önemli sorular

  • What is my requirement!?! Senin durumunda, tüm bilgiler benim şarkı sözleri web sitesi ne olmalıdır? Kimin aslında şarkı yazdı bana söylemelisiniz? Ne zaman yazılmıştır? Tüm So first thing is you have to define the scope! bu şarkıyı vs vs söylenen Kim Sizin Varlıkları ve veritabanı tasarımı o bağlıdır!
  • What are my entities?
  • what are the relationships between my main entities?

Sizin tasarım güzel iniş olabilir ve gereği ancak (! Gereklilik kapsamını) işlemek için hazırız ne kadar karmaşıklık bağlı için mükemmel bir iş olabilir, sizin gibi şeyler dikkat çekmek için olabilir:

  • Artist and Album actually have many to many relationship. Birçok sanatçı, aynı albüm üzerinde çalışabilir ve tabii ki tek bir sanatçı birden fazla albüm olacak. Geçerli tasarımı bu ile başa çıkmak olacak ama birden çok sanatçı bir albüm için birlikte çalışırken çoğaltılan release_year genreId, başlık, istiyorsun? 1 daha fazla tablo oluşturma ve yinelenen değerleri saklamak off arasında burada yer bir ticaret vardır. Geçerli tasarım ne yapıyorsun için mükemmel olabilir, ama sadece bir düşünce verdik emin olmak istedim olabilir
  • Gerçek dünyada, birden çok sanatçı bir şarkı yazmak için işbirliği. Çoğunlukla şarkıları başkası tarafından yazılmış ve başkası tarafından söylenir. You need to define what Artist means to you. Bu şarkıyı söylenen kişi mkimlikir? Bu şarkıyı yazdım biri mi var? Iki sanatçı vardır? Ben tek bir şarkı söylenen değil şarkının yazar için arama yaparsanız, bu sonuç gerekir?
  • Ben şarkı sözleri depoladığınız bir tablo göremiyorum! Ama ben bunu zaten biliyorsundur :)

Ben daha sonra size sorunlara neden olabilecek bir kaç şey daha görebiliyorum, ama dediğim gibi, ben senin ihtiyacının kapsamı nedir bilmiyorum! :)

Ben sizin için bu ilişkileri zorlamak olacak bir çerçeve kullanmak istiyorsunuz.

Birkaç yerde nesnelerin birden farklı conflating konum - Eğer albüm, sanatçı, parça ve geçerli bir tek rating tablo oluşturmak için çalışıyoruz örneğin gibi görünüyor. Bu derecelendirme üç farklı türleri için üç ayrı tablolar var daha kolay olabilir olup olmadığını dikkatle inceleyin.

Aynı şey comment için de geçerli. Ayrıca, bu tablo üzerinde, mevcut yapı (sahip tek comment_id bir albüm, sanatçı veya yolda) mantıklı olmayan tek bir yorum, sahip her nesne türü sınırlamak için görünür.

genre, type için, ve thumb, üst nesnenin içine bu tabloları inlining düşünün. Hiç Örneğin, birden çok sanatçılar arasında paylaşılan tek bir başparmak satır olması mantıklı olur, ya da sadece, her sanatçının bir thumb yolu içinde doğrudan depolanan sahip olması için daha kolay olurdu?

Son olarak, süzgün ettik ilişkilerin tümü için, size ilişkinin önem düzeyini tanımlamak gerekir. Her biri için, diğer atıfta hangi tablo tanımlamak ve bir tablodaki satırlar diğeri her satır için "kaç" var olabilir. Her albüm birden fazla parça içeriyor gibi Örneğin, album ve track arasındaki ilişki, bir-çok ilişkisi olduğunu, ancak her parça bir albüme aittir. Bu bilgileri göstermek için örneğin "crow's foot notation" gibi bir gösterim kullanılır.

Nasıl albüm ve tüm diğer tablolar arasındaki ilişkiyi tanımlayan ortak bir tablo için ayrı bir tablo sahip hakkında?