데이타베이스를사용하는데여

jjjjrr의 이미지

안녕하세요

데이타베이스를사용하는데여

테이블을 두개만들었읍니다

하나는 12개의 필드가 있고

또하나는 15개의 필드가 있읍니다

근데 이테이블의 필드가 12개는 동일한필드입니다

그러니까 15개의 필드를 가진 테이블은 12개가 12개의 테이블의 필드와 일치합니다

이상황에서

필드12개의 테이블을 없애버리고

15개의 테이블을 필드를 12개만 사용하도록 하면

자원낭비가 심한가여

그러니까

3개의 필드는 전혀필요가 없는데도 존재한다면

어느정도의 낭비를 가져올런지

12개 15개의필드를 가진테이블을 두종류로만드는것과

15개필드를 가진테이블을 하나만만들고

12개의필드가필요한경우는 12개만사용하는것과 비교해서

어느것이 좋을련지.....

그러니까 빈필드가차지하는자원의 크기가 어느정도일까

무시해도좋을정도인지가 궁금합니다 필드크기에따라서도 다르겠지만

테이블이 하나늘어나면 여러가지로 신경쓰고 코딩할것도 많을것같은데....

조언부탁드립니다

즐거운하루되세요

익명 사용자의 이미지

사용하는게 필드 12개면

12개 짜리 테이블 하나를 만드십시오.

jjjjrr의 이미지

질문을 잘못드린것같아서 다시질문드립니다
데이타베이스에 테이블을 만들었읍니다
3개의 필드를 만들었읍니다
각각 10바이트크기로필드를 만들었읍니다
그리구
레코드를 넣었읍니다
첫번째필드와 세번째필드에만넣었읍니다
두번째필드는 비워두고여
이경우 데이타베이스에서 레코드를 넣으므로서차지하는용량이 어떻게되는냐
하는겁니다
두개의 필드에 값을 넣었으므로 20바이트만 차지할것인가
아님 아무런값도없는 두번째필드의 10바이트도
용량에 차지하는지가 궁금합니다
그러니까 사용하지않는 10바이트는 낭비가되는건지 하는점입니다

그리구
하나의필드크기가 1000바이트일경우
데이타를 100바이트를 넣었을경우
데이타베이스에서 차지하는용량이
100으로인식하나요
1000으로인식하는지....
그러니까
용량이큰필드를 만들어사용할때
위의경우처럼 1000바이트필드에
값은 1바이트만넣었을경우 999 바이트는 낭비되는건가요
조언부탁드립니다

citywork의 이미지

사용하시는 DBMS종류에 따라 아래 답변이 정확하지 않을 수 있습니다.
자세한 내용은 해당 DB별로 자세한 정보를 다시 확인해 보실것을
부탁드립니다.

일반적인 경우 varchar타입을 제외하고 나머지 데이터 타입의경우
각 데이터 타입별로 고정된 길이를 가지고 있는 걸로 알고 있습니다.

예를들어, char(10)인 필드는 데이터의 유/무나 길이에 관계없이
1byte길이의 데이터를 넣어도 항상 10byte씩의 물리공간을 차지하지만,
varchar(10)인 필드는 실제 입력된 데이터의 길이만큼인 1byte의
물리공간을 차지합니다. 하지만, varchar데이터 타입은 데이터 시작/종료
위치등의 부가 정보가 필요한 관계로 (1byte + 알파)만큼의 추가적인
저장공간을 필요로 합니다.

ps : 여기서도 좋은 정보를 많이 얻으실 수 있겠지만, DB와 관계된 정보라면
http://database.sarang.net/ 에 가보시는것도 큰 도움이 될 듯 합니다.

vuccell의 이미지

두번째 답변처럼... 데이터타입에 따라 다릅니다.
char형이면, 말씀하신대로... 모두 할당됩니다.
char(10)이라면, null이라도 10에 null이 모두 들어가며 한글자라도 입력되면 나머지는 space가 들어갑니다.

varchar나 clob(oracle), text(mysql) 류라면, C프로그램에서의 포인터에 해당하는 정보가 들어갑니다. (메모리 포인터가 아니라 file상의 offset이 되겠지만요..)

그러나 기본적인 사이즈는 할당한것보다 여유있게 잡힙니다. linked 된 자료형이라 보면 됩니다. 이것을 완전히 가변사이즈로 가져갈수도 있겠지만, 그렇게 하면 필연적으로 DB의 퍼포먼스가 느려질수밖에 없습니다.

DB는 file이 크다고 느리진 않습니다. 되려 복잡한 구조를 가지고 있을때 더 느립니다. 물론 system테이블에 키값을 분석해서 따로 또 가지고 있기 때문에... DB설계자가 대충 설계해도 DBMS는 잘 처리할수 있도록 되어있긴 하지만....

말씀하신 DB 스키마문제는 실전에서도 많이 쓰입니다.
3컬럼정도 차이라면, 그냥 만들어두고 안 쓰는 일 따위 말이죠... 물론 가장 좋은것은 해당 기능에 딱 맞게 table을 설계하는 것이고, 중복되는 테이블이 없도록 스키마를 설계해야 되겠지만.... 이게 간단한 일이 아니라서.. -,-;;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.