0

次のようなオブジェクトのようなデータレコードがあるとします。

$article = array(
    'title' => '',
    'tagline' => '',
    'content' => '',
    'stats' => array(
        'words' => 0,
        'paragraphs' => 0,
        'tables' => 0
    ),
    'references' => array(
        'reference 1',
        'reference 2',
        'reference 3'
    ),
    'attachments' => array(
        'images' => array(
            'image 1',
            'image s'
        ),
        'videos' => array(
            'video 1',
            'video 2'
        )
    )
);

私の質問は、このデータレコードの配列をリレーショナルデータベースに保存するにはどうすればよいですか?テーブル構造はどのように設計すればよいですか?

stats_words、stats_paragraphsなどのフラットフィールドをいつでも設定できることは知っていますが、他に構造的な方法はありますか?JSONまたはシリアル化された文字列を単一のフィールドに格納する代わりに...

ありがとう!

4

1 に答える 1

0

たとえば、次のようになります。

article
  ID
  title _
  tagline _
  content ___
  stat_words
  stat_paragraphs
  stat_tables

article_reference
  ID
  article_id -> article
  reference _

article_attachment
  ID
  article_id -> article
  att_type // image or video
  path _
  title _

_varchar / textフィールドを意味し、他のフィールドは数値です)

またはMySQLDDLとして:

CREATE TABLE IF NOT EXISTS article (
   id               INT NOT NULL AUTO_INCREMENT,
   title            VARCHAR(255) NOT NULL,
   tagline          VARCHAR(255) NOT NULL,
   content          MEDIUMTEXT NOT NULL,
   stat_words       INT NOT NULL,
   stat_paragraphs  INT NOT NULL,
   stat_tables      INT NOT NULL,
   PRIMARY KEY ( id )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

CREATE TABLE IF NOT EXISTS article_reference (
   id               INT NOT NULL AUTO_INCREMENT,
   article_id       INT NOT NULL,
   reference        VARCHAR(255) NOT NULL,
   PRIMARY KEY ( id ),
   FOREIGN KEY ( article_id ) REFERENCES article( id )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

CREATE TABLE IF NOT EXISTS article_attachment (
   id               INT NOT NULL AUTO_INCREMENT,
   article_id       INT NOT NULL,
   att_type         INT NOT NULL,
   path             VARCHAR(255) NOT NULL,
   title            VARCHAR(255) NOT NULL,
   PRIMARY KEY ( id ),
   FOREIGN KEY ( article_id ) REFERENCES article( id )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
于 2012-07-02T11:08:57.513 に答える