Data Modeling – Relationships in SQL (Part 3)

이제 우리가 만든 것은 우리가 만든 것입니다 테이블로 변환 할 수있는 데이터베이스 모델입니다

좋아, 이제 우리가 할 다음 일은 SQL 이런 종류의 일을 성취하는 테이블을 만들 수 있습니다 그리고 함께 갈 수 있습니다 관련된 유인물이 있어야하거나 슬라이드를 가져갈 수 있습니다 phpMyAdmin에서 실행할이 SQL의 일부를 잘라내어 붙여 넣거나 SQL 가제트가 무엇이든간에 그래서 데이터베이스를 만들 것입니다

우리는 Music이라는 데이터베이스를 만들 것입니다 그래서이 것들을 사용하여 데이터베이스를 만들고, 실행중인 다른 데이터베이스와 별도로 유지하십시오 그래서 우리는 일련의 create table statement를 실행할 것입니다 우리는 아티스트에서 트랙으로 바깥쪽으로 일할 것입니다 그래서 우리는 우리의 잎을 확립해야합니다

우리가 들어가기 전에 작은 그림 그래서 우리는이 창조 진술에 대해 바깥에서 자신의 길을 만듭니다 그래서 우리는 테이블을 생성 할 것이고 이것은 테이블 생성과 동일합니다 우리는 좀 더 구체적인 것들을 사용하기 시작할 것입니다 CREATE TABLE 아티스트,와, 돌아와

CREATE TABLE 아티스트, CREATE TABLE 아티스트 및 기본 키 이제 데이터베이스에서 기본 키를 관리해야합니다 우리는 그것을 자동으로 증가시키고 제공하도록 말할 것입니다 즉 검색 문장에 이들을 넣을 필요가 없기 때문입니다 그들이 삽입 될 때 우리에게 주어진

이 코드를 코드에서 실행하면 명령문을 삽입 한 다음, 무슨 열쇠를 얻었나요? 그리고 그건 괜찮을거야 그래서 예술가는 이름을 가지고 있습니다 좋습니다 그래서이 모든 것, INTEGER NOT NULL AUTO INCREMENT KEY, 데이터베이스와 통신 중입니다 이것을 우리를 위해 관리하고, 정수로 만들고,이 숫자에 계속 추가하십시오

우리가 무언가를 넣을 때마다이 번호에 하나를 더하십시오 그런 다음 앨범이라는 표를 만듭니다 기본 키인 album_id가있을 것이고 논리적으로 사용할 수 있습니다 핵심 제목을 지정하면 특정 방식으로 제목을 색인화 할 것입니다 BTREE 인덱스는 전체 문자열을 찾는 데 유용한 인덱스입니다

문자열 접두사 및 정렬 그래서 우리는 제목별로 정렬하고 싶을 것입니다 BTREE 색인을 사용할거야 알았지? 이것이 논리적 키임을 나타냅니다 원할 경우 하나 이상의 논리 키를 가질 수 있습니다

그리고 이제 우리는 외래 키를 넣습니다 그래서 artist_id는 그 화살표 중 하나의 시작점입니다 우리는 그것을 정수라고 부릅니다 이제 우리가하는 또 다른 일은 MySQL과 통신하는 것입니다 그리고 이것은 다른 데이터베이스가 일을 다르게하는 곳입니다

그래서 이것은 MySQL의 고유 한 구문입니다 특정 구문, 기본적으로 제약 조건을 추가합니다 그리고 이것은 외래 키 제약 조건이라고 말합니다 내 열 artist_id는 참조입니다 테이블 아티스트의 artist_id 필드에 외래 키

여기서 일어나는 일은 당신이 데이터베이스에 말하고 있다는 것입니다, MySQL에게, 레코드를 삽입 할 때, 찾고있을 때 아티스트 ID, 2, 4 또는 4와 같은 숫자를 넣을 때 다섯,이 테이블에 있는지 확인하려고합니다 아티스트 그리고 그것이 존재하지 않는다면, 그것은 당신에게 소리지를 것입니다 그건 당신이 제약 조건을 위반하게하지 않을거야 이제 당신은 같아요, 그것은 의미심장합니다 아니요, 당신은 제약 조건을 넣는 사람입니다

그래서 당신은 제약 조건을 넣고 있습니다 이것은 데이터베이스에 나는 내 자신을 강요하기로 결정했다 제약 조건을 원하지 않는다면 그 제약 조건을 넣지 마십시오 그러나 우리가 이것을 외래 키로하고 싶기 때문에 우리는 그것을 일종의 책임있는 태도, 우리는 기본적으로이 점을 지적합니다 그리고이 artist_id 열에 넣은 숫자는 무엇이든 주장합니다

거기에 대응하는 행이 있다는 것입니다 이제 DELETE DELETE UPDATE 및 ON CASCADE ON DELETE CASCADE에 대해 설명합니다 CASCADE 업데이트시, 우리가 통신하고있는 것은, 특정 행이 삭제 된 경우 artist_id 행 이 아티스트 표에서이 표의 모든 행과 해당 artist_id가있는 모든 것을 삭제하십시오 ON DELETE CASCADE는 이것의 삭제가이 작업에 종속됨을 의미합니다 여기서 아티스트 ID는 해당합니다

이것이 데이터베이스를 깨끗하게 유지하는 방법입니다 우리는 나중에 그것에 대해 더 이야기 할 것입니다 동일한 내용이 ON UPDATE에 적용됩니다 그 숫자는 4 였고 우리는 그것을 24로 바꾸었고, 그 다음에 여기에 우리는 a, 나는 여기서 그런 혼란을 피우고있다 그래서 무언가가 있다면 여기에 4s의 무리가있었습니다

효과적으로 가리키고 있습니다 그래서 artist_id가 있습니다 우리는 어떻게 든이 테이블에 들어갔습니다 24 세가되면, 이것들을 모두 24로 바꿀 것입니다 그리고 이것이 ON UPDATE CASCADE의 의미입니다

이 artist_id 번호 이 테이블에서 업데이트되면이 테이블의 모든 해당 행에서 업데이트됩니다 그건 좀 더 드문 일입니다 4, 4, 4, 4 번 줄을 가져가는 경우는 드뭅니다 여기에는 4 개의 무리가 있고 여기에는 4 개의 줄이 있습니다 그리고이 행을 지우면이 모든 행을 지우고 정리합니다

그것은 훨씬 더 일반적인 것이고, 우리는 그것에 대해 잠깐 이야기 할 것입니다 이것은 모두 CREATE 문에 포함되어 있습니다 album_id, title 및 artist_id의 세 열이 있습니다 우리는 앨범의 기본 키이므로 album_id를 특별하다고 표시했습니다 title은 논리적 인 키이고 artist_id는 외래 ​​키임을 나타냅니다

그래서 우리는 그 모든 것을 모델링하고 있으며 우리는 MySQL에 노출되어 있습니다 당신은이 두 가지를 모두 무시할 수 있습니다 이들은 일종의 옵션이지만 일반적으로 데이터에 대해 알고있는 것을 더 많이 취할수록 어떻게 사용할지에 대한 힌트를 얻으면 더 똑똑한 것들이 해결됩니다 MySQL은 정말 똑똑하기 때문에 당신이 계획하고있는 것을 말하지 않는다면 당신이하고있는 일을 예견 할 수는 없습니다 그래서 우리가이 패턴을 취하면 우리는이 모든 다른 것들을 창조합니다

우리는 장르를 만들고, 트랙을 만들거야, 맞아 제목, 라디안 길이가 있습니다 기본 키 yada, yada가 있습니다 우리는 논리적 인 타이틀 키와 두 개의 외래 키 제약 조건이 있습니다 그리고 우리는 이런 것들을 연결시켜줍니다

우리 모두 끝나면 그 모든 것들이 모두있을 것입니다 그래서 우리는이 4 개의 테이블을 완전히 모델링합니다 우리는 MySQL에 외래 키를 완전히 알 렸습니다 맞습니까? 좋아, 근사하다 그래서 우리는 통과하고 모든 테이블을 만듭니다

우리는 올바른 순서로 생성해야합니다 왜냐하면 외래 키 제약 조건 테이블이 일찍 생성되었다고 가정합니다 따라서 실행 중일 때 앨범 테이블과 장르 테이블을 만들지 않은 경우 이 SQL은,이 SQL은 날려 버릴거야, 와우, 테이블 존재하지 않습니다 그럼 순서대로해야 해 나는 예술가, 앨범, 장르, 트랙을하기 때문에 그것들을 작동시키는 순서로 얻었습니다

당신이 그렇게하는 한 그들은 일종의 건축물이 될 것입니다 그리고 나서 MySQL은 여러분이 생성 할 때이 연결 웹을 만듭니다 그래서 너는이 모든 것들을 다뤄야 해 그리고 여기에 artist_id가 있습니다 그러면 null이 될 수 없습니다

자동으로 증가합니다 Yada, yada, 그리고 우리는 간다 색인이있는 경우, 네가 한 일은 여기에 나타나기 시작할거야 그러면 우리는이 모든 것을합니다 앨범, 아티스트, 장르가 있습니다

그런 다음 트랙 1을 만들 것입니다 이것이 모든 트랙 SQL입니다 그래서 우리는 그것을 할 것이며, 우리 모두 끝나면 우리는 우리의 궤적을가집니다 외래 키는이보기에 잘 표시되지 않지만이 및 그건 외래 키이고 멀리 갈 수 있습니다 MySQL은 그것들을 인식하고 그것을 insert 문에 적용 할 것이다

이제 데이터를 입력하기 시작합니다 그래서 우리가 할 첫 번째 일은, 우리는 또한 밖에서 일종의 데이터를 넣을 것입니다 그리고 그것은 예술가 인 제드 린 (Led Zeppelin)을 언급 할 때, 우리는 숫자가 무엇인지 알아야합니다 그래서 우리는 아티스트 테이블 Led Zeppelin에 삽입 할 것입니다 오른쪽, 아티스트 이름 열에 삽입하십시오

특히 누락 된 것은 기본 키입니다 그러나 그것은 데이터베이스에 의해 자동으로 수행되기 때문입니다 따라서 기본 키는 데이터베이스에 의해 자동으로 수행됩니다 그리고 여러분이 살펴 본다면, 우리가 요청한 두 개의 레코드를 삽입 할 것입니다 artist_id 양식을 지정합니다

맞습니까? 아티스트 ID가 할당 되었으니까요 오케이? 이제 우리는 이것을 압니다 이제 수동 작업에서, 당신은 이런 낙서를 지켜야 만합니다 Led Zeppelin은 1이고, AC / DC는 2입니다 이 일에서 다른 곳에서는 제드 린이라는 단어를 사용할 수 없기 때문입니다

그리고 우리는 Led Zeppelin에 속한 트랙을 만들 것입니다 Led Zeppelin에 속한 앨범 이제 프로그램에서 변수가 있습니다 기본적으로이 삽입물을 실행하고 x가 그 번호만큼 나에게 제공한다고 말할 수 있습니다 그리고 데이터베이스에 요청할 수 있습니다

그 삽입 후 방금 지정한 번호는 무엇입니까? 그러나 우리는 그것을 봐야 만합니다 우리는 슬로우 모션으로 손으로 직접하고 있습니다 그러나 프로그램이 그것을 할 때 그들은 같아요, 멍청이, 그 번호는 뭐였지? 그리고 숫자와 변수가 있습니다 그런 다음 나중에 insert 문에 그 번호를 넣을 수 있습니다 우리가 손으로 할거야

그리고 우리는 Led Zeppelin이 1이고 AC / DC가 2라는 것을 기억해야합니다 그래서 우리는 다시 시작할거야 우리는 장르를 할거야, 우리는 그것을 삽입한다 우리는 Rock and Metal으로 끝납니다 그래서 우리는 작은 숫자가 무엇인지 알고 있습니다

바위와 금속, 바위는 1, 금속은 2입니다 나는 이들이 무엇인지 기억조차하지 않는다 나는 종이 위에 적어 두지 않았다 아마 종이에 적어 두어야 할 것 같습니다 잠깐만, 내가 여기 종이 하나와 펜 하나를 가져다 주자

따라서 1은 제플린 (Led Zeppelin), 2는 AC / DC입니다 그리고 장르에서 1은 Rock이고 2는 Metal입니다 여기 내 변수가 있습니다 나는 이것을 종이로 조금 적어 보았다 이제 두 개의 테이블이 있습니다

나는 내 예술가와 내 장르를 가졌다 그래서 아직 외래 키를 만들지 않았습니다 우리는 아직 외래 키를 만들지 않았습니다 이제 앨범을 삽니다 그리고 앨범을 떠올리면 바로 artist_id라는 제목이 붙습니다

기본 키로 시작합니다 여기서 album_id가 기본 키입니다 걱정마, 자동으로 끝날거야 그렇지? 앨범도 우리가 앨범을 참조 할 것이므로 기본 키를 가져야합니다 그러나 artist_id는 우리가 앨범 테이블에 있기 때문에 앨범의 외래 키입니다

앨범 표 좋아, 그래서 우리는 명시 적으로 우리가 알고있는 사촌을 삽입해야한다 이 아티스트는 사용자 인터페이스의 어딘가에 속합니다 맞아, 우리는 AC / DC를 위해 무언가를 넣을거야 따라서 앨범에 넣을 때 artist_id라는 제목을 삽입해야합니다

우리는 우리를 위해 자동으로 앨범을 만들지 않아도됩니다 그런 다음 제목과 artist_id를 입력해야합니다 하지만 우리는 AC / DC를 넣지 않을 것이며, 우리는 2를 넣을 것입니다 왜냐하면 우리는 AC / DC가 실제로 2라는 것을 기억했기 때문입니다 그리고 우리가 artist_id1을 위해 Led Zeppelin을 할 때도 마찬가지입니다

그것은 아이러니합니다 그건 진짜 4가 아니야, 4 학년이야, 끈이야, 그렇지? 따라서 Led Zeppelin은 1이므로 기억합니다 우리가 이것을 PHP에서 돌리고 있다면, 우리는 달러 마지막 삽입 또는 이와 비슷한 것을 변수라고합니다 좋아요, 그래서 당신은 요점을 얻습니다 그리고 이것들은 단지 숫자가됩니다

이제 여기에 7 개를 넣으면 그것은 날아갈 것입니다 그것이 말하기 때문에, 나는 7 개의 아티스트 행을 가지고 있지 않습니다 그리고 그것은 제약의 일부입니다 그래서 당신은 합법적 인 숫자를 넣어 다른 테이블에 넣어야합니다 그래서 이러한 것들의 순서가 중요합니다

당신이 이러한 관계를 구축 할 때, 당신은 그 점에 당신이 가리키는 것을 놓습니다 그런 다음이 것을 넣고 가리 킵니다 그리고이 작은 녀석들을 모두 연결하고 있습니다 매혹적인 일이지만, 제대로 해줘야합니다하지만 효과가 있으면 영광입니다

그럼 까다로운 일이있어 모든 곡을 넣어야 해 알았어 그래서 우리는 앨범을 가지고 있습니다 다시 track_id가 기본 키이므로 다시 걱정하지 않아도됩니다

이 모든 물건, 트랙, 제목 길이, 평점 및 개수는 데이터 일뿐입니다 그리고 album_id와 genre_id, 그건 작은 화살표를 모델링하는 거죠? 그리고 Black Dog는 앨범에서 왔고, 기다리고, 앨범 번호를 잊어 버렸으므로 그 번호를 써야했습니다 그러나 무엇이든, 당신은 요점을 얻습니다 그래서 이것은 앨범 2, 앨범 2, 앨범 1, 앨범 1입니다 장르 1, 장르 1, 장르 2, 장르 2입니다

이제 나는 말하기 시작했다 하나 이상의 장소에서 문자열 데이터를 복제 할 수 없다고 말하면서 이제 앨범에 트랙이 두 개 이상 있기 때문에 데이터를 복제해야합니다 그래서 우리는 앨범을 두 번 넣어야합니다 여기 트랙이 있는데, 여기 트랙이 있고 그것은 같은 앨범에 있습니다 그들이 효율적이기 때문에 숫자를 복제하는 것은 완전히 끝내줍니다

줄은 나쁘고 숫자는 좋다 우리는이 모든 음모를 통해 요점에 도달했습니다 우리는 숫자를 문자열에 대한 프록시로 사용했습니다 그래서 당신은이 모든 것을하고 지금은 관계가 있습니다 그리고보기가 어렵지만 신중하게 모든 것을 다한다면, 당신은 이제이 작은 화살들을 효과적으로 재구성 할 수 있습니다

이 외래 키 열은 화살표의 시작점입니다 그리고 이것들은 조회입니다, 그렇죠? Rock으로 연결되는 링크, Rock 링크, Metal 링크, 이것은 금속에 연결됩니다 그래서 우리는 여기와 여기에서이 숫자들을 사용하고 있습니다 또한이 문자열에 대한 프록시로 여기에 있습니다 그것이 우리가 한 일입니다

우리는 그렇게하기 위해 열심히 일했습니다 [음악]