데이터베이스에 색상을 저장해야합니다.데이터베이스 필드에 색상을 어떻게 저장할 수 있습니까?
데이터베이스 필드에 색상을 저장하는 가장 좋은 방법은 무엇입니까?, 색상 이름 또는 다른 이름으로 저장 하시겠습니까 ??
데이터베이스에 색상을 저장해야합니다.데이터베이스 필드에 색상을 어떻게 저장할 수 있습니까?
데이터베이스 필드에 색상을 저장하는 가장 좋은 방법은 무엇입니까?, 색상 이름 또는 다른 이름으로 저장 하시겠습니까 ??
경우 자사의 HTML 페이지에 대한 문자열로 #RRGGBB 태그를 저장하는 것은 아마 충분하다.
그것의 .NET 용, 그것의 ARGB 값System.Drawing.Color c = System.Drawing.Color.FromArgb(int);
int x = c.ToArgb();
그래서 당신은 단지 저장할 수있는 INT에서 색상을 작성을 지원합니다.
아마도 색상 값이 가장 좋을 것입니다. #FFFFFF 또는 # FF0000
하거나 FFFFFF 또는 FF0000의 # 모든 색상 문자열 # 당신의 불필요한 데이터를 저장하는 의미로 시작됩니다 DB에 가지 불필요한입니다. – BenAlabaster
색상이 웹 색상으로 제한되어 있다면 16 진수 표기법을 사용하겠습니다.
예 : 파란색은 # 0000FF입니다. 여기
HTML/CSS와 같이 색상을 # FF00CC와 같이 24 또는 32 비트 정수로 저장하지만 문자열이 아닌 정수로 변환됩니다.
정수는 문자열 (특히 VCHAR)보다 적은 공간을 차지합니다. int로
사용 ToArgb 및 FromArgb 등
공간이 너무 작아서 인간이 읽을 수 있지만 약간 큰 방식으로 계속 쓰려는 경향이 있습니다. – ceejayoz
또한 색상 문자열의 크기는 항상 7 자 (#RRGGBB)이므로 VARCHAR이 아닌 CHAR (7)을 사용하십시오. –
왜 그것을 16 진수로 저장하고 #? 헥스 자체는 사람이 읽을 수있는 형태로 동일하며, 그들은 모두, 그래서 그냥 소프트웨어를 앞에 추가, 어쨌든 #으로 시작해야 ... – BenAlabaster
스토어는 설정 값을 얻을 수 있습니다.
둘 다 사용하지 않는 이유는 무엇입니까? 테이블 구조는 키에 대해 Int ARGB가되고 이름에 대해 varchar가됩니다.
ARGB (Key), Name
FFFFFFFF ,Black
FF000000 ,White
... 일치하지 않는 값 (검은 색은 흰색, 검은 색은 흰색)으로 인해 문이 열리기 때문입니다. –
정치가 또는 얼룩말에게 알리기 – MrTelly
는 I는 3 열 컬러 룩업 테이블을 갖는 제안 :
ID의 지능; 이름 varchar (40) null; ColorVal의 문자 (8) 또는 익명의 색상에 대한 INT (어떻게 표현하고 색상에 따라)
은 당신의 색상을 저장하기 위해 무엇을 찾고있다 형식
널 이름도 경기장을 떠나지? CMTK, RGB, Pantone? 다소 도움이 될 것입니다. 엄격하게 #RGB 16 진수 형식은 웹 색상이나 응용 프로그램에 적합하지만 페인트를 섞으려는 경우에는 그리 좋지 않습니다.
나는 그것이 달려 있다고 생각합니다. 색상을 저장하기 만하면 16 진수 표기법을 사용하면됩니다. 특정 색상 채널에 대해 검색어를 수행해야하는 경우 각 색상 채널 (RGB, ARGB, CYMK 등)에 대해 작은 입력란을 원할 수 있습니다.
간단한 저장을 위해 간단하게 유지하십시오. 분석을 수행해야하는 경우 문제 도메인에서 지시 한 대체 옵션을 고려해야합니다.
나는 char (9)로 저장한다.
으로의
//Save this int value in database
int argb = colorDialog1.Color.ToArgb();
및 데이터베이스 사용에서 그것을 retireve하기 :
를//argb is the value of color stored in database in prev. section
Color.FromArgb(argb)
이상적인 저장 형식은 데이터베이스 사용 계획에 따라 다릅니다.
가장 간단한 해결책은 물론 모든 형식을 지원하지 않고 모든 것을 RGB 색상의 6 바이트 ASCII 16 진수 문자열로 저장합니다. 나중에 추가 형식을 지원하려는 경우 문제가 발생할 수 있습니다.
가독성, 유연성 및 액세스 용이성을 위해 일반 문자열을 사용하는을 사용하는 것이 좋습니다. 대부분의 경우 16 진수 색상 문자열과 원시 정수 사이의 저장 공간 차이는 무시할 수 있습니다. 속도 향상을 위해 색인을 생성 할 색상 필드를 설정할 수 있습니다. 그리고 유연성을 위해, 당신은 다음과 같은 기능 중 하나 이상을 추가 할 수 있습니다 : NULL, 빈, 무효
을 검색하고 정렬 속도뿐만 아니라 디스크의 사용을 최적화 부호없는 정수로 저장하는 갈 방법이며 . 이는 하나의 숫자가 문자열보다 검색이 빠르며 내부적으로 몇 비트만큼 저장할 수 있고 FromArgb()
및 유사한 기능을 사용하여 쿼리의 색상 채널을 기준으로 필터링 할 수 있기 때문입니다. 단점은 코드가 모든 쿼리에서 모든 색상 필드에 대해 앞뒤로 물건을 끊임없이 변환해야한다는 것입니다. 따라서 실제로 데이터베이스 속도를 상쇄 할 수 있습니다.
하이브리드 접근 방식은 살펴볼 가치가 있습니다. 예를 들어, id, rgbhex, cssname, cmyk, hsl, hsv, lab, rgb 등의 필드로 구성되는 모든 가능한 8 비트/채널 RGB 값의 테이블을 생각해보십시오. 그러한 테이블의 생성은 너무 커서 (16777216 개 항목). 테이블에 16MB 이상을 추가 할 수 있지만이 솔루션의 장점은 모든 색상 값이 색상 조회 테이블에 외래 키와 연결된 단일 정수 ID 필드 일 뿐이라는 것입니다. 빠른 정렬 및 검색, 변환없이 필요한 모든 색상 데이터 및 확장 성이 뛰어납니다.테이블을 자체 데이터베이스 파일에 보관하여 응용 프로그램의 다른 데이터베이스 나 스크립트와 공유 할 수도 있습니다. 틀림없이이 솔루션은 대부분의 경우 과잉입니다. 이 양식에 저장하는 경우로
주목해야 할 것은 System.Drawing.Color에는 해당되지만 System.Windows.Media.Color에는 해당하지 않습니다. ToArgb() 메서드가 없습니다. I는 각 구성 요소에 대해 별개의 바이트 값을 예상하고 그 FromArgb() 메소드에 전달 된 값을 얻기 위해 toString() 메서드에서 #AARRGGBB 값을 저장하고, 각 부에 byte.Parse (값 NumberStyles.HexNumber)을 이용하여 결국 . – Zannjaminderson