ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingเพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก  (อ่าน 1222 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
untilate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 106
ออฟไลน์ ออฟไลน์

กระทู้: 2,318



ดูรายละเอียด
« เมื่อ: 12 กันยายน 2009, 20:33:38 »

คือผมทำเว็บเพลงอะ แล้วตอนผมใส่ผมก็จะใส่ไปทีละเพลงแล้วข้อมูลจะอยู่ในตารางเดียว ลักษณะนี้

songid   songname   album   artist
1   song1   album1   artist1
2   song2   album2   artist2
3   song3   album1   artist1
4   song4   album3   artist3
5   song5   album2   artist2
6   song6   album3   artist3
6   song7   album4   artist3

พอเข้าใจผมมั๊ย

คือแต่ละเพลง จะไม่ซ้ำกันเลย แต่ album จะซ้ำกันมาก และ artist ก็จะซ้ำกันมากกว่า album เสียอีก

แล้วเราพอมีวิธีไหนบ้างครับ ทีลดความซ้ำซ้อนของข้อมูลนี้
บันทึกการเข้า
Se7enKeNz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 584



ดูรายละเอียด
« ตอบ #1 เมื่อ: 12 กันยายน 2009, 20:36:05 »

งง อะครับ จะลดความซ้ำซ้อนอะไรเอ่ยครับ  Sad
บันทึกการเข้า
untilate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 106
ออฟไลน์ ออฟไลน์

กระทู้: 2,318



ดูรายละเอียด
« ตอบ #2 เมื่อ: 12 กันยายน 2009, 20:41:40 »

ก็คือถ้า album artist ซ้ำกัน ก็ให้เหลือเพียงอันเดียวพออะครับ

แล้วใน song ก็ค่อยเพิ่มเป็น album_id กับ artist_id ขึ้นมาใหม่

แต่ผมไม่รู้วิธีการที่จะสร้าง ตารางขึ้นมาใหม่แบบนั้นอะครับ
บันทึกการเข้า
Se7enKeNz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 584



ดูรายละเอียด
« ตอบ #3 เมื่อ: 12 กันยายน 2009, 20:44:51 »

ใครแวะผ่านมาช่วยขยายความทีนะคับ ผมยัง งงอยู่ครับ
ยังไงลองแอด MSN มาคุยดีกว่ามั้ยครับ ผมชักงงๆ  Tongue
บันทึกการเข้า
untilate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 106
ออฟไลน์ ออฟไลน์

กระทู้: 2,318



ดูรายละเอียด
« ตอบ #4 เมื่อ: 12 กันยายน 2009, 20:52:52 »

มันก็น่างงอยู่ครับ

คือ

เมื่อก่อนเว็บผมมีโครงสร้างฐานข้อมูลเป็น ตารางเดียว ยึด รายชื่อเพลงเป็นหลัก คือ

id 1 - เพลง ก - ศิลปิน a - อัลบั้ม 1
id 2 - เพลง ข - ศิลปิน a - อัลบั้ม 2
id 3 - เพลง ค - ศิลปิน a - อัลบั้ม 2
id 4 - เพลง ง - ศิลปิน b - อัลบั้ม 3
id 5 - เพลง จ - ศิลปิน b - อัลบั้ม 3
id 6 - เพลง ฉ - ศิลปิน b - อัลบั้ม 4

จะเห็นไว้ว่า db ต้องเปลืองพื้นที่กับการเก็บ ชื่อศิลปิน ชื่ออัลบั้ม ซ้ำๆ กันเยอะมาก

ผมเลยอยากให้มันเปลื่ยนใหม่เป็น

ตารางแรก

id เพลง - ชื่อเพลง - id ศิลปิน - id อัลบั้ม

1 - เพลง ก - 1 - 1
2 - เพลง ข - 1 - 2
3 - เพลง ค - 1 - 2
4 - เพลง ง - 2 - 3
5 - เพลง จ - 2 - 3
6 - เพลง ฉ - 2 - 4

ตาราง ที่ 2

ตาราง 2 ก็จะเก็บ ว่า

ศิลปิน id=1 เนี้ย ชื่อศิลปินว่าอะไร

ตาราง 3

ตาราง 3 ก็จะดูอีกทีว่า

อัลบั้ม id=1 เนื้ย มันคืออัลบั้มอะไร

พอเข้าใจไหม

คำถามของผมคือ เราจะแปล ตาราง แบบที่มัน ซ้ำๆ กันมาเป็นแบบใหม่นี้ยังไง
บันทึกการเข้า
Se7enKeNz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 584



ดูรายละเอียด
« ตอบ #5 เมื่อ: 12 กันยายน 2009, 20:58:40 »

อ่อพอเข้าใจแล้วครับ แล้วต้องการอะไรครับ
โครงสร้างฐานข้อมูล หรือว่า Code PHP ครับ  Tongue
บันทึกการเข้า
untilate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 106
ออฟไลน์ ออฟไลน์

กระทู้: 2,318



ดูรายละเอียด
« ตอบ #6 เมื่อ: 12 กันยายน 2009, 21:01:43 »

ไม่ต้องถึง กับ เขียน code ให้หรอกครับ

ผมอยากทราบแค่วิธีแปลงมาเป็นแบบนั้นอะครับ

เดี๋ยวตัว code เอง หาเอง ครับ


แต่ตอนนี้ผมไม่มีแนวคิดอะไรเลยครับ
บันทึกการเข้า
zaakikuya
คนรักเสียว
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 173



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 12 กันยายน 2009, 21:03:56 »

คงต้องเริ่ม design ใหม่ทั้งหมดแล้วค่ะ

อันเก่ามันซ้ำซ้อนจริงด้วยค่ะ

ควรจะ design แยกออกเป็นประเภท

อย่างเช่น ตารางรายชื่อเพลง, ตารางศิลปิน, ตารางประเภทเพลง ประมาณนี้ค่ะ  :Smiley
บันทึกการเข้า

crazycat
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 30
ออฟไลน์ ออฟไลน์

กระทู้: 1,013



ดูรายละเอียด
« ตอบ #8 เมื่อ: 12 กันยายน 2009, 21:10:07 »

อืม....ผมก็ไม่เคยทำด้วยนะครับตัวนี้ ตอนนี้คิดคราว ๆ ได้ประมาณว่าต้องทำอย่างน้อย 2 tables แล้วก็ต้องมีการทำ index ด้วย

ข้อมูลมี: ชื่อเพลง ชื่ออัลบั้ม ชื่อศิลปิน
เงื่อนไข: ต้องการลดการใช้ อัลบั้มและศิลปิน ที่มีความซ้ำซ้อน
ความเหมือน: อัลบั้มกับศิลปิน จะเหมือนกันทุกครั้ง(หรือเปล่า)

table แรก

songid songname indexid
1        song1       1
2        song2       2
3        song3       1
4        song4       3
5        song5       2
6        song6       3
7        song7       4



table ที่สอง

indexid   album   artist
1           album1   artist1
2           album2   artist2
3           album3   artist3
4           album4   artist4




อันนี้เป็นแค่แนวคิดนะครับ อย่าไปคิดมากกับมันนะครับ  มันขึ้นอยู่กับลักษณะการใช้งานด้วยนะครับ  ลองไปประยุกต์ตามความเหมาะสมนะครับ
บันทึกการเข้า

Se7enKeNz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 584



ดูรายละเอียด
« ตอบ #9 เมื่อ: 12 กันยายน 2009, 21:21:38 »

ขอยกตัวอย่างเลยนะครับ

ตาราง music
songidsongnamealbumartist
1อยู่บำรุง11
2ระยะปลอดภัย11
3You Are Not Alone22
4Leave Me Alone32

ตาราง album
albumidalbumname
1Acadamy Fantasia
2Micheal Single Vesion
3Micheal Return

ตาราง artist
idartistname
1ว่าน ธนกฤต
2Micheal Jackson


การดึงข้อมูลมาแสดง
ก็ใช้คำสั่งประมาณนี้นะครับ

<?php

$dbhostname = "localhost";
$dbuser = "ชื่อผู้ใช้ฐานข้อมูล";
$dbpassword = "พาสเวิร์ดฐานข้อมูล";
$dbname = "ชื่อฐานข้อมูล";
mysql_connect($dbhostname, $dbuser, $dbpassword) or die("Error Can not Connect To Database Server");
mysql_select_db($dbname) or die("Error Not Selete Database");
?>
<table width="600px">
<?
$music = mysql_query("select * from music order by songid");
while($dbarr = mysql_fetch_array($user)) {
?>
<tr>
    <td width="15%"><?php echo $dbarr['songid'] ; ?></td>
    <td width="35%"><?php echo $dbarr['songname'] ; ?></td>
    <td width="25%"><?php echo $dbarr['album'] ; ?></td>
    <td width="25%"><?php echo $dbarr['artist'] ; ?></td>
</tr>
<?php } ?>
</table>

ตรงส่วนของ <?php echo $dbarr['album'] ; ?> กับ <?php echo $dbarr['artist'] ; ?>
ลองนำไปดัดแปลงเป็นตัวแปรดูครับ
ซึ่งตรงนี้ผมยังคิดมุกมะค่อยออก รอท่านอื่นมาประสานต่อละกันครับ
« แก้ไขครั้งสุดท้าย: 12 กันยายน 2009, 21:25:18 โดย Se7enKeNz » บันทึกการเข้า
Se7enKeNz
สมุนแก๊งเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 584



ดูรายละเอียด
« ตอบ #10 เมื่อ: 12 กันยายน 2009, 21:23:39 »

กำ กดผิดกดสองครั้ง ...
บันทึกการเข้า
zaakikuya
คนรักเสียว
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 173



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 12 กันยายน 2009, 21:37:03 »

อย่าเพิ่งไปสนใจโค้ดเลยค่ะ สำคัญที่ database ต้อง design ให้ถูกดีกว่าค่ะ นอมัลไลซัก 3NF ก็ใช้ได้แล้วค่ะ :Smiley
บันทึกการเข้า

untilate
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 106
ออฟไลน์ ออฟไลน์

กระทู้: 2,318



ดูรายละเอียด
« ตอบ #12 เมื่อ: 12 กันยายน 2009, 21:55:20 »

อย่าเพิ่งไปสนใจโค้ดเลยค่ะ สำคัญที่ database ต้อง design ให้ถูกดีกว่าค่ะ นอมัลไลซัก 3NF ก็ใช้ได้แล้วค่ะ :Smiley

พูดภาษาเทคนิคแล้วงง เลยครับ

ขอบคุณคุณ Se7enKeNz  มากนะครับ

อีกอย่าง

ตรงอัลบั้ม ไม่จำเป็นต้องตรงกับ ชื่อศิลปิน อะครับ

ศิลปินคนหนึ่งอาจมีหลายอัลบั้มก็ได้
บันทึกการเข้า
navico
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 108
ออฟไลน์ ออฟไลน์

กระทู้: 2,315



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 13 กันยายน 2009, 15:43:45 »



แบบนี้น่าจะพอได้กระมัง...
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์