2012-03-15 4 views
0

정교한 용어와 방법 론적 crudeness에 대한 사과.MySQL - 테이블을 업데이트하는 방법

의 내가 몇 그래서 같은 테이블이 있다고 가정 해 봅시다 :

ARTISTS 
artistId | artistName 
     1 | Led Zeppelin 
     2 | Pink Floyd 


ALBUMS 
cdId | artistId | title 
    1 |  1 | Physical Graffiti 
    2 |  1 | Led Zeppelin IV 
    3 |  2 | Wish U Were Here 

내가 가지고있는 실제 테이블에 (몇 가지 상황에서 앨범 테이블을 업데이트하지만 수있는 유연한 방법을 알아 내려고 노력하고있어를, 제목 실제로 title_id는 별도의 테이블에 저장된 ID에 키 됨).

i. 두 장의 LZ CD를 판매하고 "Hous of the Holy"를 구입하면 ALBUMS에있는 기존 레코드를 모두 삭제하고 artistId = 1을 입력하고 "업데이트"하는 방법으로 새 ​​레코드를 삽입해야합니까? 내 관심사는 여기에 AUTO_INCREMENT 기본 키 ids가 부족할 가능성이다. 비록 내가 염두에두고있는 것이 너무 많은 트래픽을 보게 될지 의심 스럽지만, 서명되지 않은 INT는 처리 할 수 ​​없다. 내 현재의 복잡한 생각은 (n 개의 새 레코드를 추가하려는 경우 일치하지 않는 기존 레코드가 인 것을 n에서 찾아보고 해당 레코드를 업데이트하고 적어도 예비 레코드가 필요한 외부 레코드 인 m - n을 제거하십시오. 내가 "Led Zeppelin"에 대한 업데이트를 기반으로한다면 AID를 얻기위한 부질의).

i.1. "HOTH"를 추가하고 "IV"를 제거하려면 어떻게해야합니까? 기존 레코드를 모두 삭제하고 다시 추가해야합니까?

ii. cdId = 2에서와 같이 오타를 수정하고 싶다면 어떻게해야합니까?

답변

0

어쩌면이 article을 사용하면 기본 키에 auto_increment 대신 GUID를 사용하고 GUID를 사용할 수 있습니다.

0

나는 개인적으로, 나는 그것을 도울 수 있다면 결코 행을 삭제하지 않는다. 해당 앨범의 인스턴스 수를 저장하기 위해 수량 필드를 추가하는 것이 좋습니다.

자동 증가가 부족한 경우는 거의 없지만 의심 스럽다면 ... bigint를 사용하십시오. 당신은 그 많은 앨범을 팔지 않을 것입니다.

I.1 다시 말하지만, 이와 같은 행을 삭제하는 것은 바람직하지 않습니다. 수량 필드가있는 경우 하나를 증가시키고 다른 하나는 감소시킵니다.

II. 오타를 수정 하시겠습니까? "UPDATE ALBUMS SET 제목 = 'Led Zeppelin ZOSO'어디에서 cdId = 2?

0

ALBUMS를 각 아티스트가 만든 모든 앨범의 목록으로 유지하고 사용자가 소유 한 앨범의 cdId (또는 사용자 ID와 cdId의 ID 또는 사용자 ID, CDId 및 수량)가있는 테이블 OWNAGE를 만듭니다.

관련 문제