MySQL 테이블 이름의 밑줄이 문제를 일으키나요?
테이블 이름의 밑줄이 성능에 영향을 미치거나 일부 플랫폼에서 문제가 발생합니까?
예를들면,user_profiles
사용하는 것이 나을까요?userProfiles
아니면 그냥 개인적인 취향의 문제일까요?
아니요. 밑줄은 테이블 이름에서 완벽하게 합법적입니다.
MySQL 설명서의 이 페이지에서는 허용되는 문자에 대해 설명합니다.
기본적으로:
따옴표로 묶지 않은 식별자에 허용되는 문자:
ASCII: [0-9,a-z,A-Z$_]
확장:U+0080..U+FFFF따옴표로 묶은 식별자에 허용되는 문자:
ASCII: U+0001..U+007F
확장:U+0080..U+FFFF
개인적으로 저는 소문자 a-z, 가끔 숫자와 밑줄을 사용하는 편입니다.하지만 @Vince가 말했듯이, 그것은 단지 개인적인 취향일 뿐입니다.
내가 본 유일한 문제는 mysqlshow를 사용하여 테이블의 구조를 볼 때 언더스코어를 와일드카드로 처리하고 이름에 언더스코어가 있는 경우 일치하는 테이블 이름만 반환한다는 것입니다.
이름에 밑줄이 있으면 표의 표 구조를 볼 방법을 찾을 수 없었습니다.오늘 아침에 제가 직접 발견하고 확인했습니다.
이전 버전의 경우 MySQL 버전 4.0.18 및 4.1.22, 최신 버전의 경우 5.1.52에 해당하는 것으로 알고 있습니다.아마도 이 내용은 어딘가에 기록되어 있을 것입니다(아직 시간을 내어 살펴보지 않았습니다). 하지만 다른 사람들에게는 당혹스러운 일일 수도 있기 때문에 제가 직접 문제에 대한 정보를 찾을 때 이 질문을 우연히 발견했을 때 언급하기로 결정했습니다.
밑줄을 사용하는 것은 문제가 없지만, 밑줄을 사용하는 경우와 같이 밑줄을 사용하지 않는 경우가 있을 수 있습니다.My\_Table
저는 MySQL 버그에 대한 링크를 몇 개 찾았는데, 이 링크는 닫혀 있다고 표시되어 있거나 밑줄과 관련하여 재생할 수 없습니다.문제가 없는 것으로 알고 있습니다. 저는 항상 낙타 케이스 위에 밑줄을 사용하고 아무런 문제도 겪지 않았습니다.
아뇨, 완벽하게 좋아요.실제로 MySQL에서 가장 권장되는 이름입니다(내부 테이블의 이름을 누구에게 지정하는지에 따라!).
Microsoft Windows에서 기본 MySQL 동작 이름을 지정하는 것은 테이블 이름을 소문자로 지정하는 것입니다.이로 인해 문제가 발생할 수 있습니다.나는 이것의 원인이 무엇인지 잘 모르겠습니다.
하지만 저는 개인적으로 제 테이블의 이름을 다음과 같이 짓는 것을 선호합니다.UserLikesPage
,User
그리고.PostComment
예를 들어, 내 코드에 클래스 이름이 반영되어 있고 MySQL로 윈도우를 사용하지 않기 때문입니다.
피하셔야 합니다.MySQL 설명서에 허용된 문자이지만 문제가 발생할 수 있습니다.예를 들어 MySQL 5.0 및 5.1(이후 버전일 수도 있음)에서는 언더스코어가 포함된 테이블 이름을 포함하는 쿼리에 대해 쿼리 캐시가 히트하지 않습니다.
아니요, 데이터베이스의 밑줄은 전혀 문제를 일으키지 않습니다.제 경험으로는 데이터베이스 열에서 어떤 단어라도 식별하는 것이 더 좋다고 합니다.
열 이름으로 'This Is My Column'을 사용하면 쓰기 쉽지만, 열 이름으로 'This_is_my_column'을 사용하면 이전보다 더 쉽게 읽을 수 있습니다.
밑줄을 사용하는 데 문제가 없습니다.나는 그것이 단지 개인적인 선호라고 생각합니다.
SquirreL SQL 및 DbVisualizer와 같은 많은 데이터베이스 시각화 도구는 언더스코어를 와일드카드 종류로 취급하며 테이블을 트리로 그룹화합니다.예를 들어, 테이블 "document_a"와 관련 테이블 "document_a_details", "document_a_history"가 있습니다.DbVisualizer에서 "document_a" 테이블을 보면 세 개의 테이블 모두에 대한 열이 표시됩니다.
이것은 일반적으로 문제가 되지 않지만 혼란스러울 수 있습니다.예를 들어 SquirreL SQL의 그래핑 도구를 사용하여 ERD를 생성하면 여러 테이블의 열을 하나의 테이블로 결합하고 ERD의 모든 열의 관계에 대한 커넥터를 그립니다.이로 인해 실제로 존재하지 않는 관계가 그려집니다.
이러한 이유로 테이블 이름에 밑줄을 포함하지 않습니다.
저는 제 테이블 이름을 지을 때 밑줄에 문제가 생긴 적습니다.그냥 개인적인 취향일 뿐입니다.
열 이름 앞에 '그레이트 악센트(')를 넣기만 하면 됩니다.예를 들어,
CREATE TABLE USERS(
`PERSON_ID` NVARCHAR(100),
`FNAME` NVARCHAR(255),
`LNAME` NVARCHAR(255),
PRIMARY KEY (`PERSON_ID`)
);
언급URL : https://stackoverflow.com/questions/6637496/do-underscores-in-a-mysql-table-names-cause-issues
'programing' 카테고리의 다른 글
jQuery - 요소에 클래스가 있는 경우 이렇게 합니다. (0) | 2023.10.13 |
---|---|
구글 분석 API의 게시물에 대한 서버 응답 상태를 얻는 방법 또는 404 상태의 페이지를 필터링하는 방법은 무엇입니까? (0) | 2023.10.13 |
c#에서 단일 파라미터를 여러 번 사용하는 더 나은 방법 (0) | 2023.10.13 |
@PathVariable을 사용하여 Spring MVC 컨트롤러를 단위 테스트하는 방법은 무엇입니까? (0) | 2023.10.13 |
다른 테이블의 값으로 열 업데이트 (0) | 2023.10.13 |