2012-02-11 2 views
-2

SQL (SQLite3) 데이터베이스 디자인 방법과 관련하여 2 가지 질문이 있습니다. 데이터베이스를 사용하는 방법은 다음과 같습니다.MySQL 데이터베이스 디자인 향상

형용사가 있습니다. (또는 실제로 어떤 단어가 나옵니다.) & 그 단어를 명사형으로 변환해야합니다. 그래서 "행복하게"나는 그 단어를 "행복한"(명사는 & 일반 형태)로 해결할 필요가 있습니다. "hungrier"의 경우 "배가 고프다"고 대답해야합니다.

Q1 : 대부분의 SQL 쿼리에는 명사 테이블에서 특정 단어 (행)를 검색하는 것이 포함됩니다. 어떤 SQL 테이블 디자인이 내 필요에 가장 적합할까요? & 검색/조회 속도면에서 더 효율적입니까?

CREATE TABLE NounTable (u_id int PRIMARY KEY, u_word varchar, u_noun varchar); 
// OR 
CREATE TABLE NounTable (u_word varchar PRIMARY KEY, u_noun varchar); 

// The majority of my queries will be searching according to the word column 
SELECT u_noun FROM NounTable WHERE u_word="hungrier"; 

Q2 : 각 행에 대한 고유 한 정수 ID가 있다면 나는 새 행을 추가 할 때, 나는 이미 다른 행에 의해 촬영하지 않는 고유 한 정수 ID 먹으 렴을 찾을 필요가있다. 내 경우에는 각 행의 id가 오름차순이므로 행 1의 경우 id = 2, 행 2의 경우 = 2 .... 행 n = n입니다.

과거에 행을 추가하려면 먼저 가장 큰 고유 ID를 찾은 다음 1을 추가하여 새 행을 만듭니다. 그러나 나는 한 번 SQL 변수가 있다고 들었는데, 자음 번호이 자동으로이를 수행 할 것이라고 생각합니까? 즉, 자동으로 증가합니다. 그래서 대신 그걸 사용해야합니까, 아니면 id를 정수로 사용하도록 권장할까요?

CREATE TABLE NounTable (u_id int PRIMARY KEY, u_word varchar, u_noun varchar); 
// Or shd I do this... 
CREATE TABLE NounTable (u_id autonumber PRIMARY KEY, u_word varchar, u_noun varchar); 

PS : MYSQL & SQLite는 어떤 경우에는 별 차이가 있습니까? 어쩌면 다른 변수일까요? 또는 그들이 저장하는 방법의 유일한 차이점은 & 데이터베이스의 정보를 찾으십니까?

답변

2

첫 번째 대안에서 u_word를 색인화하면 성능 측면에서 큰 차이는 없습니다. 그것은 주로 당신이 가지고있는 다른 테이블과 단어의 쌍을 표현하고 싶거나 단어와 명사를 갖고 싶은지에 달려 있습니다.

ID를 늘릴 특별한 이유가없는 경우 자동 번호를 사용해야합니다. 수동으로 키를 하나씩 늘리면 자동 번호로 처리되는 IIRC 동안 항상 경쟁 조건 및 충돌 위험이 있습니다.

관련 문제