ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => หัวข้อเริ่มโดย: untilate ใน 12 กันยายน 2009, 20:33:38

ชื่อเรื่อง: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: untilate ใน 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 เสียอีก

แล้วเราพอมีวิธีไหนบ้างครับ ทีลดความซ้ำซ้อนของข้อมูลนี้
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: Se7enKeNz ใน 12 กันยายน 2009, 20:36:05
งง อะครับ จะลดความซ้ำซ้อนอะไรเอ่ยครับ  :(
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: untilate ใน 12 กันยายน 2009, 20:41:40
ก็คือถ้า album artist ซ้ำกัน ก็ให้เหลือเพียงอันเดียวพออะครับ

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

แต่ผมไม่รู้วิธีการที่จะสร้าง ตารางขึ้นมาใหม่แบบนั้นอะครับ
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: Se7enKeNz ใน 12 กันยายน 2009, 20:44:51
ใครแวะผ่านมาช่วยขยายความทีนะคับ ผมยัง งงอยู่ครับ
ยังไงลองแอด MSN มาคุยดีกว่ามั้ยครับ ผมชักงงๆ  :P
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: untilate ใน 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 เนื้ย มันคืออัลบั้มอะไร

พอเข้าใจไหม

คำถามของผมคือ เราจะแปล ตาราง แบบที่มัน ซ้ำๆ กันมาเป็นแบบใหม่นี้ยังไง
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: Se7enKeNz ใน 12 กันยายน 2009, 20:58:40
อ่อพอเข้าใจแล้วครับ แล้วต้องการอะไรครับ
โครงสร้างฐานข้อมูล หรือว่า Code PHP ครับ  :P
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: untilate ใน 12 กันยายน 2009, 21:01:43
ไม่ต้องถึง กับ เขียน code ให้หรอกครับ

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

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


แต่ตอนนี้ผมไม่มีแนวคิดอะไรเลยครับ
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: zaakikuya ใน 12 กันยายน 2009, 21:03:56
คงต้องเริ่ม design ใหม่ทั้งหมดแล้วค่ะ

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

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

อย่างเช่น ตารางรายชื่อเพลง, ตารางศิลปิน, ตารางประเภทเพลง ประมาณนี้ค่ะ  ::)
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: crazycat ใน 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




อันนี้เป็นแค่แนวคิดนะครับ อย่าไปคิดมากกับมันนะครับ  มันขึ้นอยู่กับลักษณะการใช้งานด้วยนะครับ  ลองไปประยุกต์ตามความเหมาะสมนะครับ
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: Se7enKeNz ใน 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'] ; ?>
ลองนำไปดัดแปลงเป็นตัวแปรดูครับ
ซึ่งตรงนี้ผมยังคิดมุกมะค่อยออก รอท่านอื่นมาประสานต่อละกันครับ
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: Se7enKeNz ใน 12 กันยายน 2009, 21:23:39
กำ กดผิดกดสองครั้ง ...
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: zaakikuya ใน 12 กันยายน 2009, 21:37:03
อย่าเพิ่งไปสนใจโค้ดเลยค่ะ สำคัญที่ database ต้อง design ให้ถูกดีกว่าค่ะ นอมัลไลซัก 3NF ก็ใช้ได้แล้วค่ะ ::)
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: untilate ใน 12 กันยายน 2009, 21:55:20
อ้างถึงจาก: zaakikuya ใน 12 กันยายน 2009, 21:37:03
อย่าเพิ่งไปสนใจโค้ดเลยค่ะ สำคัญที่ database ต้อง design ให้ถูกดีกว่าค่ะ นอมัลไลซัก 3NF ก็ใช้ได้แล้วค่ะ ::)

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

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

อีกอย่าง

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

ศิลปินคนหนึ่งอาจมีหลายอัลบั้มก็ได้
ชื่อเรื่อง: Re: เพื่อนๆ ช่วยผม จัดการเรื่องฐานข้อมูลหน่อยครับ ตอนนี้มันซ้ำซ้อนมาก
โพสต์โดย: navico ใน 13 กันยายน 2009, 15:43:45
(http://www.cvpic.com/uploads/2e6c2d6c9db5fb8359229db6672a585e.png)

แบบนี้น่าจะพอได้กระมัง...