2016-10-13 10 views
-1

데이터베이스에 테이블을 정의 할 때 열 유형을 int/varchar 등으로 설정합니다. 왜 자동으로 설정할 수 없습니까?데이터베이스 엔진이 자동 열 데이터 형식을 사용할 수없는 이유는 무엇입니까?

데이터베이스는 입력에서 인식하고 PHP가 변수를 처리하는 것처럼 유형 자체를 설정합니다. 또한, 유튜브는 통계 카운터를 무너 뜨릴 필요가 없습니다.

+0

'유튜브도 통계 카운터를 깰 ​​필요는 없다.'- 지구상에서 무슨 말을하고 있니? – Siyual

+3

SQL은 강력한 유형의 언어이므로 데이터 유형을 선택하면 유효하지 않은 값을 데이터베이스에 저장하지 않아도됩니다. –

+1

http://gizmodo.com/gangnam-style-broke-youtubes-view-counter-1666102786 @Siyual – cowboysaif

답변

0

경우에 따라 (예 : SQL Server의 sql_variant 또는 오라클의 ANYDATA) 할 수 있습니다. 좋은 생각이 다른 문제입니다이든


... 모든

첫째, (데이터베이스) 명시 적 스키마를 가지고 있지, 당신이 암시 스키마를 피할 수 있습니다 의미하지 않는다 (암시 클라이언트 애플리케이션이 기대하는 것). 예를 들어 데이터베이스에 문자열이 있기 때문에 처음에는 숫자를 예상하도록 구현 된 경우 응용 프로그램에서 해당 문자열을 처리 할 수있는 것은 아닙니다. 이것은 실제로 동적 대 정적 유형의 인수이며, 정적 유형 지정은 일반적으로 중요하지 않은 프로그램의 경우 우수한 것으로 인정됩니다.

또한 이러한 "변형"유형은 종종 상당한 오버 헤드를 가지며 인덱싱 및 sargability 관점에서 문제가됩니다. 예를 들어, 2가 10보다 작습니까? 숫자가 맞다면 예, 그렇지 않으면 문자열입니다!

데이터베이스에서 기대하는 것 (99 %의 경우)을 알고 있다면 데이터베이스에 알려서 유형을 확인하고 최적화 할 수 있습니다!