Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mendapatkan Nama Pengguna dengan Cekap daripada Lajur Dipisahkan Koma dalam Pangkalan Data?

Bagaimanakah Saya Boleh Mendapatkan Nama Pengguna dengan Cekap daripada Lajur Dipisahkan Koma dalam Pangkalan Data?

Susan Sarandon
Susan Sarandonasal
2024-12-17 13:32:18637semak imbas

How Can I Efficiently Retrieve Usernames from a Comma-Separated Column in a Database?

Mengekstrak Nama Pengguna daripada Lajur Dipisahkan Koma

Pertimbangkan senario di mana anda mempunyai berbilang jadual: tblA (pengguna), tblB (nama pengguna), dan tblC (nomenklatur dengan ID pengguna dipisahkan koma). Matlamatnya adalah untuk mendapatkan semula semua nama pengguna apabila mencari nilai tatanama tertentu.

Pendekatan dan Had Sedia Ada

Pertanyaan yang disediakan cuba menggunakan cantuman silang dan fungsi subrentetan untuk mengekstrak userID pertama daripada nilai dipisahkan koma. Walau bagaimanapun, pendekatan ini tidak cekap dan tidak memberikan hasil yang tepat apabila terdapat berbilang ID pengguna yang dikaitkan dengan tatanama.

Skema Normalisasi dan Pertanyaan Diperbaiki

Adalah disyorkan untuk normalkan skema pangkalan data dengan memperkenalkan jadual simpang. Jadual tblC_user hendaklah mengandungi dua lajur: c_id (merujuk tblC) dan userID (merujuk tblB). Ini akan menghapuskan keperluan untuk ID pengguna yang dipisahkan koma dalam tblC.

Pertanyaan berikut menunjukkan cara untuk mengekstrak nama pengguna menggunakan skema biasa:

SELECT *
FROM tblC c
JOIN tblC_user cu ON (c.id = cu.c_id)
JOIN tblB b ON (b.userid = cu.userid)
WHERE c.nname = "new1";

Pertanyaan ini akan mendapatkan semula semua nama pengguna yang berkaitan dengan cekap. dengan tatanama "baru1".

Faedah Normalisasi

Menormalkan skema pangkalan data menawarkan beberapa kelebihan:

  • Integriti dan ketepatan data yang lebih baik
  • Pertanyaan yang lebih pantas dan mengurangkan masa pemprosesan
  • Penyelenggaraan dan pengubahsuaian data yang dipermudahkan
  • Hubungan bertingkat untuk mengekalkan anak rekod

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Nama Pengguna dengan Cekap daripada Lajur Dipisahkan Koma dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn