2016-12-10 3 views
1

私はムービー統計ウェブサイトを開発しており、私はデータベースに行くための最良の方法を理解しようとしています。PHP MySQLデータベースフィールド

ウェブサイトは映画に関するものです。しかし、それぞれの映画には異なるフィールドがあります。私はこのデータを保存する最良の方法を理解する助けが必要です。

たとえば、私は「映画」というテーブルを持っています。これにはすべての一般情報が含まれます。しかし、映画の中には、自分のフィールドに他の情報を持たせたいと思っています。

ムービーごとにテーブルを作成することはできますが、ムービーの量が増えた後、データベースが非常に乱雑になります。私は "映画"テーブルのプレースホルダーフィールドを作成することができますが、私は1つまたは2つが必要かもしれません、または私は10または20の追加フィールドが必要な場合があります。

私はこれにどのようにアプローチすべきか誰にでも勧められますか?

は、あなたの状況に対処するために

答えて

1

一つの簡単な方法は、映画、そのテーブル内のすべてのレコードは、特定の映画のための単一のattribueを表しテーブルを、属性を作成することです、ありがとうございました。次のようなテーブル定義が意味するかもしれない:このデザインを使用して

CREATE TABLE movie_attribute (
    movie_attr_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    movie_id NOT NULL 
    attr_name VARCHAR(255) NOT NULL, 
    attr_value VARCHAR(255) NOT NULL, 
    FOREIGN KEY fk_movie(movie_id) REFERENCES movies(id) 
) 

を、任意の数の属性は、大きな設計変更を必要とせずに与えられた映画のために追加することができます。データベーステーブルは、列単位ではなく、行単位で快適に成長するように設計されています。

+0

サロゲートは必ず冗長です。エンティティと属性に満足できるPKを形成することができます。 – Strawberry

+0

これは、特定のムービーのすべてのキーと値のペア属性が別個であることを前提としています。特に、これらの属性が制御されていない外部ソースからのものである場合は、常にそうであるとは限りません。 –

+0

ここに自然キーはありませんか? – Strawberry

関連する問題