ecos的dbschema

dbschema

base/dbschema/apps.php

<?php
//apps表名
$db['apps'] = array(
    'columns'=>array(
        'app_id'=>array(
            'type'=>'varchar(32)',
            'required'=>true,
            'default'=>'',
            'pkey'=>true,
            // begin 和 desktop 相关
            'with'=>100,
            'label'=>app::get('base')->_('程序目录'),
            'hidden'=>1,
            'editable'=>false,
            'in_list'=>true,
            'default_in_list'=>false
        ),
        'app_name'=>array(
            'type'=>'varchar(50)',
            //begin 和 desktop相关
            'with'=>150,
            'label'=>app::get('base')->_('应用程序'),
            'is_title'=>1,
            'in_list'=>true,
            'default_in_list'=>1
        ),
        'status' =>  array(
             'type' => array (
                  'installed' => app::get('base')->_('已安装, 未启动'),
                  'resolved' => app::get('base')->_('已配置'),
                  'starting' => app::get('base')->_('正在启动'),
                  'active' => app::get('base')->_('运行中'),
                  'stopping' => app::get('base')->_('正在关闭'),
                  'uninstalled' => app::get('base')->_('尚未安装'),
                  'broken' => app::get('base')->_('已损坏'),
              ),
              // begin 和desktop相关 ----------------------
              'label' => app::get('base')->_('状态'),
              'width' => 100,
              'default' => 'uninstalled',
              'in_list' => true,
              'default_in_list' => true,
              // end --------------------------------------
        ),
        'remote_config'=> array(
             'type'=>'serialize'
         )
    ),
    'version'=>'$Rev: 44008 $',
    'unbackup'=>true
);

上述代码经过解析生成sql语句

 

dbschema来描述表结构

ecos安装时,会扫描相关app中的dbschema中的文件,用这个文件生成相应的表结构并创建

约定base/dbschema/apps

生成的表sdb_base_apps  sdb表前缀 base是appname 

对应model base_mdl_apps

 

columns

表字段

注意!type字段类型,pkey是否主键,extra=>'auto_increment'自增长,type=>'table:goods'对应用于用于app下goods表的主键类型(其实这里是外键了,所以类型和goods表的主键相同)

 

字段名称

字段名称就是键值

 

type

mysql字段类型,int、varchar、text

枚举类型type=>array() 对应mysql的enum //desktop 高级搜索产生一个select选项可以进行选择

特有的类型

money 对应 decimal(20,3)//涉及到金额 dbeav的save会验证是否是money类型的数据

email 对应 varchar(255)//dbeav的save会验证是否是email类型的数据

bn 对应 varchar(255)//商品的货号 货品的货号 订单号等等

html 对应 text//商品详情 文章内容等

bool 对应 enum('true','false')//开关类型

time 对应 int(10) unsigned(无符号)//desktop的高级搜索绑定日历

cdate 对应 int(10) unsigned

intbool 对应 enum('0','1')//开关类型

region 对应 varchar(255)

password 对应 varchar(32) md5加密后的字符串

tinybool 对应 enum('Y','N')//开关类型

number 对应 mediumint unsigned//数量等类型

float 对应 float

gender 对应 enum('male','false')//性别

ipaddr 对应 varchar(20) //ip地址

serialize 对应 longtext//

last_modify 对应 int(10) unsigned //和time类型相似,可以理解为最后更新时间

table:table_name 将本app下的table_name这个表的主键作为关联关系

 

required 

true false(mysql "not null")

 

default

 

pkey 是否主键

primary key()

 

extra

扩展值

extra=>'auto_increment' mysql auto_increment

extra=>'CHARACTER SET "utf8"' mysql CHARACTER SET "utf8"

 

index

索引 默认为空

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [index_type]
    ON tbl_name (index_col_name,...)
[index_type]

index_col_name:
    col_name [(length)] [ASC | DESC]

index_type:
    USING {BTREE | HASH | RTREE}

<?php
'index' => array (
    'ind_prefix' => array( // 索引名称 
        'columns' => array( // 要创建索引的数据库字段名
            0 => 'prefix',
        ),
        'prefix' => '' // 索引的类型 UNIQUE|FULLTEXT|SPATIAL 如果为空 为一般的索引
        'type' => '' // 指定索引算法 BTREE | HASH | RTREE
    )
)
?>

 

 

 

posted @ 2013-11-29 19:48  魔天06  阅读(291)  评论(0编辑  收藏  举报