資料庫中CT
A. 想建一個病人CT圖像的資料庫,該怎樣設計
病人表 包括病人姓名等基本信息 病歷號 當主鍵
圖像表 包括 圖像名稱,圖像大小(方便邏輯中查詢),圖像類型(2d/3d),id 當主鍵 patient_id 外鍵參照病人表的主鍵
病人和圖像表式1對多的形式。
兩個表足矣
既然圖像都是文件,統一採用BLOB形式,按照圖像類型來區分2d/3d 。
樓上說的有道理。文件過大影響性能,資料庫村路徑比較有搞頭,但是要注意備份。
B. 設教學資料庫中有3個關系
select TNO,TN from T where TN like '_偉%'
select TN from T where TNO='C5'
select T.TNO,T.TN,TC.CNO from T,TC where T.TNO=TC.TNO and T.TN='劉偉'
select TC.TNO,group by TC.CNO as 『任課數』from TC,T where TC.TNO=T.TNO
and T.Dept='計算機' and T.TNO in (select TNO from TC group by CNO havingcount(*)>2)
selcet TNO,TN from T where Prof in (select Prof from T where TN='劉偉')
select x.TN as姓名,x.Sal as 教師工資, y.Sal as劉偉的工資from T as x,T as y
where x.Sal>y.Sal and y.TN='劉偉'
第四問不太確定
C. 請教sybase資料庫C語言CT Library 如何綁定decimal類型數據
CS_DECIMAL 綁定不上去
我代碼是這樣寫的 ,有啥問題啊
CS_DECIMAL csje;
sprintf (sql_command,"select ny,pl,sprq,ccrq,cc,fzdm,dzdm,zzdm,ddjdm,xb,lc,sy2,rs,je*10 from %s..kptj_09 where ny='%s' and left(fzdm,2)='14' and pl in ('K','B','T','M','F','Y','G','V') and yl in ('G','C') ",gs_Syb_Database,ny);
rtnval=ct_command(cmd_ptr,CS_LANG_CMD,sql_command,strlen(sql_command),CS_UNUSED);
if (rtnval!=SUCCESS) return FAILURE;
rtnval=ct_send(cmd_ptr);
if (rtnval!=SUCCESS) return FAILURE;
while ((rtnval=ct_results(cmd_ptr,&result_type))==CS_SUCCEED)
{
switch ((int)result_type)
{
case CS_ROW_RESULT:
rtnval = ct_res_info(cmd_ptr, CS_NUMDATA, &num_columns, CS_UNUSED, NULL);
if (rtnval==FAILURE) return FAILURE;
for (i=1;i<=num_columns;i++)
{
rtnval=ct_describe(cmd_ptr, i, &rowdesc[i-1]);
}
rtnval=ct_bind(cmd_ptr, 1, &rowdesc[0], rjhzl.ny,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 2, &rowdesc[1], pl,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 3, &rowdesc[2], rjhzl.sprq,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 4, &rowdesc[3], rjhzl.ccrq,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 5, &rowdesc[4], rjhzl.cc,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 6, &rowdesc[5], rjhzl.fzdm,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 7, &rowdesc[6], rjhzl.dzdm,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 8, &rowdesc[7], rjhzl.zzdm,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 9, &rowdesc[8], rjhzl.ddjdm,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 10, &rowdesc[9], rjhzl.xb,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 11, &rowdesc[10], &rjhzl.lc,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 12, &rowdesc[11], &rjhzl.sy2,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 13, &rowdesc[12], &csrs,NULL,NULL);
rtnval=ct_bind(cmd_ptr, 14, &rowdesc[13], &csje,NULL,NULL); //---------DECIMAL 類型
while ( ((rtnval=ct_fetch(cmd_ptr,CS_UNUSED,CS_UNUSED,CS_UNUSED,(CS_INT*)NULL)) == CS_SUCCEED)
|| (rtnval == CS_ROW_FAIL))
{
if (rtnval==CS_ROW_FAIL)
continue;
printf("lc:%d--rs:%f--je:%f--sy2:%d\n",rjhzl.lc,csrs,csje,rjhzl.sy2); //-----------csje 綁定不成功,顯示全是 0.00
}
if (rtnval != CS_END_DATA)
return FAILURE;
break;
case CS_CMD_SUCCEED:
break;
case CS_CMD_DONE:
break;
case CS_CMD_FAIL:
break;
}