Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memegang banyak item dalam kolom di mysql

Jangan simpan topic_id dalam paper meja. Sebagai gantinya, buat tabel lain yang dinormalisasi (banyak ke banyak) yang menautkan topic_id ke paper_id .

/* Each paper can exist in this table as many times as necessary for all its topics */
CREATE TABLE paper_topics (
  paper_id INT NOT NULL,
  topic_id INT NOT NULL,
  FOREIGN KEY (paper_id) REFERENCES paper (paper_id),
  FOREIGN KEY (topic_id) REFERENCES topic (topic_id),
  PRIMARY KEY (paper_id, topic_id)
);

Ini akan memungkinkan Anda untuk menyimpan sebanyak mungkin topik per kertas yang diperlukan.

Untuk mengambil topik untuk makalah, gunakan:

SELECT 
  paper.*,
  topic_name
FROM 
  paper
  LEFT JOIN paper_topics ON paper.paper_id = topic.paper_id
  LEFT JOIN topic ON topic.topic_id = paper_topic.topic_id
WHERE paper.paper_id = <some paper id value>

Hampir tidak pernah merupakan ide yang baik untuk mencoba menyimpan beberapa nilai dalam satu kolom (seperti daftar topic_id yang dipisahkan koma) dalam paper meja). Alasannya adalah untuk melakukan kueri terhadapnya, Anda harus menggunakan FIND_IN_SET() yang meningkatkan kerumitan dalam melakukan penggabungan dan tidak memungkinkan untuk menggunakan indeks kolom saat membuat kueri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah meja 'lubang hitam' itu jahat?

  2. UTF-8 MySQL dan Charset

  3. Menyimpan stempel waktu di tabel mysql menggunakan php

  4. MySQL Bagaimana cara MEMILIH data dari tabel yang direkam hari ini?

  5. Perbedaan antara Dalam database memori dan database memori disk