/* 
 * 湖南大学软件学院07级5班Debugger小组 
 *
 * 文件名称:Column.h
 * 功能摘要:属性类 声明文件
 *
 * 作者:卓卓
 * 创建日期:2009年3月13日 
 *  修改日期:2009年3月14日
 */
#pragma once
#include <string>
#include "GlobalDefine.h"
using namespace std;
class Column
{
private:
    short m_columnSize;//字段大小
    string m_columnName;//字段名称(32个字节)
    string m_columnDes;//字段说明(256个字节)
    DB_DataType m_dataType;//数据类型
    bool m_primaryKey;//主键
    bool m_foreignKey;//外键
    bool m_index;//索引    
    bool m_required;//必填
    string m_defaultValue;//默认值
    string m_forKeyTableName;//外键相连的表名
    string m_forKeycolumnName;//外键相连的列名
public:
    Column(void);
    Column(string& name,int& size,DB_DataType dataType);//构造函数 初始化主要数据成员
    ~Column(void);
    bool SetColumn(string& name,int& size,DB_DataType& dataType,string& description,
                   bool priKey=false,bool forKey=false,bool index=false,
                   string forTableKey=NULL,string forColumnName=NULL);//各数据成员的初始化
    int GetSize() const;//返回字段大小
    string GetName() const;//返回字段名称
    string GetDescription() const;//返回字段说明
    DB_DataType GetDataType() const;//返回数据类型
    bool IsPriKey() const;//返回是否主键
    bool IsForKey() const;//返回是否外键
    bool IsIndex() const;//返回是否索引
    bool IsRequired() const;//返回是否必填
    string GetDefaultValue() const;//返回默认值
    bool SetName(string& name);//设定字段名
    bool SetDescription(string& description);//设定字段说明
    bool SetDataType(DB_DataType& dataType);//设定数据类型
    void SetPriKey(bool& priKey);//设定主键的布尔值
    void SetForKey(bool& forKey);//设定外键的布尔值
    void SetIndex(bool& index);//设定索引的布尔值
    void SetRequired(bool& required);//设定必填的布尔值
    bool SetDefualtValue(string& defualtval);//设定默认值
};